aboutsummaryrefslogtreecommitdiffstats
path: root/lang
diff options
context:
space:
mode:
authorstefan <stefan@FreeBSD.org>2008-12-10 16:44:24 +0800
committerstefan <stefan@FreeBSD.org>2008-12-10 16:44:24 +0800
commit6a13120c7c816c218cd6fe54149e9cba8429fbcf (patch)
treedfa78770613c6291479763d4e1a2662cab744504 /lang
parentd79a72e4ff8b4725dd6ffaecf2862afc0311588e (diff)
downloadfreebsd-ports-gnome-6a13120c7c816c218cd6fe54149e9cba8429fbcf.tar.gz
freebsd-ports-gnome-6a13120c7c816c218cd6fe54149e9cba8429fbcf.tar.zst
freebsd-ports-gnome-6a13120c7c816c218cd6fe54149e9cba8429fbcf.zip
This patch adds three features to the lang/mlton port:
* Support for FreeBSD 6.x * Support for compilation with SML/NJ * Cross-compilation with mingw32 PR: 124061 Submitted by: Timothy Bourke <timbob@bigpond.com> Approved by: maintainer
Diffstat (limited to 'lang')
-rw-r--r--lang/mlton/Makefile66
-rw-r--r--lang/mlton/distinfo9
-rw-r--r--lang/mlton/files/add-local-cross197
-rw-r--r--lang/mlton/files/ml.grm.sig88
-rw-r--r--lang/mlton/files/ml.grm.sml5497
-rw-r--r--lang/mlton/files/ml.lex.sml5660
-rw-r--r--lang/mlton/files/mlb.grm.sig32
-rw-r--r--lang/mlton/files/mlb.grm.sml894
-rw-r--r--lang/mlton/files/mlb.lex.sml1854
-rw-r--r--lang/mlton/files/patch-Makefile22
-rw-r--r--lang/mlton/files/patch-bin-mlton_script18
-rw-r--r--lang/mlton/files/patch-runtime-Makefile84
-rw-r--r--lang/mlton/files/patch-runtime-cenv.h11
-rw-r--r--lang/mlton/files/patch-runtime-mingw.c43
-rw-r--r--lang/mlton/files/patch-runtime-mingw.h20
-rw-r--r--lang/mlton/files/upgrade-basis.sml68
-rw-r--r--lang/mlton/files/yacc.grm.sig54
-rw-r--r--lang/mlton/files/yacc.grm.sml1053
-rw-r--r--lang/mlton/files/yacc.lex.sml901
-rw-r--r--lang/mlton/pkg-plist10
20 files changed, 16568 insertions, 13 deletions
diff --git a/lang/mlton/Makefile b/lang/mlton/Makefile
index b2281a6c36f4..68ceb31e2ccf 100644
--- a/lang/mlton/Makefile
+++ b/lang/mlton/Makefile
@@ -12,10 +12,11 @@
PORTNAME= mlton
PORTVERSION= 20070826
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= lang
MASTER_SITES= http://mlton.org/pages/Download/attachments/ \
- http://mlton.org/pages/Experimental/attachments/
+ http://mlton.org/pages/Experimental/attachments/ \
+ http://www.cse.unsw.edu.au/~tbourke/distfiles/
DISTFILES= ${BOOT_DIST} ${SRC_DIST}
EXTRACT_ONLY= ${SRC_DIST}
@@ -23,17 +24,43 @@ EXTRACT_ONLY= ${SRC_DIST}
MAINTAINER= jesper.louis.andersen@gmail.com
COMMENT= An optimizing Standard ML compiler
+LIB_DEPENDS= gmp.7:${PORTSDIR}/math/libgmp4
+RUN_DEPENDS= bash:${PORTSDIR}/shells/bash
BUILD_DEPENDS= bash:${PORTSDIR}/shells/bash
+
+OPTIONS= SMLNJ "Bootstrap with SML/NJ (can take >15 hours)" off \
+ MINGW32 "Add the mingw32 target (requires wine)" off
+
+.include <bsd.port.pre.mk>
+
.if !defined(NOPORTDOCS)
BUILD_DEPENDS+= gsed:${PORTSDIR}/textproc/gsed \
htmldoc:${PORTSDIR}/textproc/htmldoc \
latex:${PORTSDIR}/print/teTeX
.endif
-LIB_DEPENDS= gmp.7:${PORTSDIR}/math/libgmp4
-RUN_DEPENDS= bash:${PORTSDIR}/shells/bash
SRC_DIST= ${DISTNAME}-1.src.tgz
-BOOT_DIST= ${PORTNAME}-${BOOT_VER}-1-0.${MACHINE_ARCH}-freebsd.${BOOT_SUF}
+
+.if defined(WITH_SMLNJ)
+BUILD_DEPENDS+= smlnj-devel>=110.65:${PORTSDIR}/lang/sml-nj-devel
+BOOT_DIST=
+MAKE_ENV+= SMLNJ_DEVEL=yes
+ALL_TARGET= bootstrap-nj
+.else
+BOOT_DIST= ${PORTNAME}-${BOOT_VER}-1.${MACHINE_ARCH}-freebsd${OSRELMAJ}.${BOOT_SUF}
+.endif
+
+.if defined(WITH_MINGW32)
+BUILD_DEPENDS+= wine:${PORTSDIR}/emulators/wine \
+ mingw32-gcc:${PORTSDIR}/devel/mingw32-gcc \
+ ${LOCALBASE}/mingw32/lib/libgmp.a:${PORTSDIR}/devel/mingw32-libgmp4
+RUN_DEPENDS+= mingw32-gcc:${PORTSDIR}/devel/mingw32-gcc \
+ ${LOCALBASE}/mingw32/lib/libgmp.a:${PORTSDIR}/devel/mingw32-libgmp4
+
+PLIST_SUB+= MINGW32CROSS=""
+.else
+PLIST_SUB+= MINGW32CROSS="@comment "
+.endif
ONLY_FOR_ARCHS= i386
@@ -42,7 +69,6 @@ MANCOMPRESSED= yes
BOOT_WRKSRC= ${WRKDIR}/mlton-bootstrap
-ALL_TARGET= all
USE_GMAKE= yes
MAKE_ARGS= DESTDIR='' \
PATH=${WRKSRC}/build/bin:${BOOT_WRKSRC}/bin:${PATH} \
@@ -52,14 +78,17 @@ MAKE_ARGS= DESTDIR='' \
INSTALL_TARGET= install-no-docs
.endif
-.include <bsd.port.pre.mk>
-
.if ${ARCH} == "i386"
MLTON_ARCH= "x86"
.endif
-.if ${OSVERSION} < 700000
-IGNORE= cannot bootstrap on FreeBSD < 7.0
+.if ${OSVERSION} >= 700000
+OSRELMAJ=
+.else
+OSRELMAJ= -6
+.if ${OSVERSION} < 600000
+IGNORE= cannot bootstrap on FreeBSD < 6.0
+.endif
.endif
BOOT_EXTRACT= --bzip2
@@ -67,11 +96,22 @@ BOOT_SUF= tbz
BOOT_VER= 20070826
post-extract:
+ @${CP} ${FILESDIR}/add-local-cross ${WRKSRC}/bin/
+.if defined(WITH_SMLNJ)
+ @${CP} ${FILESDIR}/upgrade-basis.sml ${WRKSRC}/mlton/
+ @for f in `ls ${FILESDIR}/ml.* ${FILESDIR}/mlb.*`; do \
+ ${CP} $$f ${WRKSRC}/mlton/front-end/; \
+ done
+ @for f in `ls ${FILESDIR}/yacc.*`; do \
+ ${CP} $$f ${WRKSRC}/mlyacc/src/; \
+ done
+.else
@${MKDIR} ${BOOT_WRKSRC}
@${TAR} xf ${DISTDIR}/${BOOT_DIST} ${BOOT_EXTRACT} -C ${BOOT_WRKSRC}
@${REINPLACE_CMD} -e \
"s|lib=\'${LOCALBASE}/|lib=\'${BOOT_WRKSRC}/|" \
${BOOT_WRKSRC}/bin/mlton
+.endif
post-patch:
@${REINPLACE_CMD} -e \
@@ -81,6 +121,12 @@ post-patch:
"s|CFLAGS += -I/usr/local/include|CFLAGS += -I${LOCALBASE}/include|" \
${WRKSRC}/runtime/bytecode/Makefile
+post-build:
+.if defined(WITH_MINGW32)
+ @${ECHO} Adding mingw32 target...
+ ${WRKSRC}/bin/add-local-cross mingw32 x86 mingw
+.endif
+
post-install:
.for bin in mllex mlnlffigen mlprof mlton mlyacc
${CHOWN} ${SHAREOWN}:${SHAREGRP} ${PREFIX}/bin/${bin} \
diff --git a/lang/mlton/distinfo b/lang/mlton/distinfo
index 7fc2b8069529..15c5463add56 100644
--- a/lang/mlton/distinfo
+++ b/lang/mlton/distinfo
@@ -1,6 +1,9 @@
-MD5 (mlton-20070826-1-0.i386-freebsd.tbz) = 60ce94e330ec2d8c66563e7b6b9bd534
-SHA256 (mlton-20070826-1-0.i386-freebsd.tbz) = b953da050a725d79c0445896cd6892d266f340622c52824d7f06bf8a4aed34cf
-SIZE (mlton-20070826-1-0.i386-freebsd.tbz) = 7006769
+MD5 (mlton-20070826-1.i386-freebsd-6.tbz) = 006bdcedd9840b06a4f57822edb5d162
+SHA256 (mlton-20070826-1.i386-freebsd-6.tbz) = 515d7c11892793e330effce8c4e02467bbfb870671d91ef544b3644003709bea
+SIZE (mlton-20070826-1.i386-freebsd-6.tbz) = 7120924
+MD5 (mlton-20070826-1.i386-freebsd.tbz) = 60ce94e330ec2d8c66563e7b6b9bd534
+SHA256 (mlton-20070826-1.i386-freebsd.tbz) = b953da050a725d79c0445896cd6892d266f340622c52824d7f06bf8a4aed34cf
+SIZE (mlton-20070826-1.i386-freebsd.tbz) = 7006769
MD5 (mlton-20070826-1.src.tgz) = 08356566e20f47c1bcc8002fde72c2ec
SHA256 (mlton-20070826-1.src.tgz) = c2f7e07523294d070682399377ea83ed11f2ed59d142b30fc7032c1c8fd9e103
SIZE (mlton-20070826-1.src.tgz) = 5585773
diff --git a/lang/mlton/files/add-local-cross b/lang/mlton/files/add-local-cross
new file mode 100644
index 000000000000..01bc3ef4d942
--- /dev/null
+++ b/lang/mlton/files/add-local-cross
@@ -0,0 +1,197 @@
+#!/usr/bin/env bash
+
+set -e
+
+# This script adds a new crosscompiler target for MLton.
+#
+# It takes three arguments.
+#
+# 1. <crossTarget>, which is what MLton would pass via the -b flag to the GCC
+# cross-compiler tools. You don't need to have installed these tools in order
+# to run this script, since it uses ssh and the native gcc on the target.
+# Examples of $crossTarget are i386-pc-cygwin and sparc-sun-solaris.
+#
+# 2. <crossArch> specifies the target architecture.
+# The posibilities are: amd64, hppa, sparc, x86.
+#
+# 3. <crossOS> specifies the target OS.
+# The possibilities are: aix, cygwin, darwin, freebsd, hpux, linux, mingw,
+# netbsd, openbsd, solaris.
+#
+# Here are some example uses of this script.
+#
+# add-cross mingw32 x86 mingw
+#
+# You also may need to set $libDir, which determines where the$exe.c
+# cross-compiler target will be installed.
+#
+# This script is a modification of add-cross. Rather than ssh into a box
+# running the target platform it uses cross-compiler tools to produce
+# executables and an environment to execute them.
+#
+# It only works with the mingw32 cross-compiler and the wine environment.
+#
+
+MAKE=gmake
+GCC=mingw32-gcc
+RUN=wine
+
+die () {
+ echo >&2 "$1"
+ exit 1
+}
+
+usage () {
+ die "usage: $name <crossTarget> <crossArch> <crossOS>"
+}
+
+case "$#" in
+3)
+ crossTarget="$1"
+ crossArch="$2"
+ crossOS="$3"
+ ;;
+*)
+ usage
+ ;;
+esac
+
+name=`basename "$0"`
+original=`pwd`
+dir=`dirname "$0"`
+src=`cd "$dir/.." && pwd`
+
+PATH="$dir":$PATH
+
+# libDir is the mlton lib directory where you would like the
+# cross-compiler information to be installed. If you have installed
+# from the rpms, this will usually be /usr/lib/mlton. You must have
+# write permission there.
+
+lib="$src/build/lib"
+
+# You shouldn't need to change anything below this line.
+
+rm -rf "$lib/$crossTarget"
+mkdir -p "$lib/$crossTarget" || die "Cannot write to $lib."
+
+tmp="$src/cross-$crossTarget"
+#ssh $machine "rm -rf $tmp && mkdir $tmp"
+rm -rf $tmp && mkdir $tmp
+
+$MAKE -C "$src" dirs
+
+echo '* Making runtime.'
+#( cd "$src" && tar cf - Makefile basis-library bin include runtime ) |
+# ssh $machine "cd $tmp && tar xf - && cd runtime &&
+# ../bin/mmake COMPILE_FAST=yes OMIT_BYTECODE=yes TARGET_ARCH=$crossArch TARGET_OS=$crossOS clean all &&
+# cd .. && make dirs runtime"
+cd "$src"
+for f in Makefile basis-library bin include runtime; do
+ cp -pfR $f "$tmp"
+done
+
+echo "* Running make clean all in $tmp/runtime."
+cd "$tmp"
+$MAKE -C runtime COMPILE_FAST=yes OMIT_BYTECODE=yes TARGET=$crossTarget \
+ TARGET_ARCH=$crossArch \
+ TARGET_OS=$crossOS \
+ clean all
+
+echo "* Running make dirs runtime in $tmp."
+$MAKE TARGET=$crossTarget TARGET_ARCH=$crossArch TARGET_OS=$crossOS dirs runtime
+
+echo "* Copy from tmp to build (build/lib/$crossTarget)."
+# ssh $machine "cd $tmp/build/lib/self && tar cf - ." |
+# ( cd "$lib/$crossTarget" && tar xf - )
+cp -pfR "$tmp/build/lib/$crossTarget" "$lib/"
+
+echo "* Copy from $crossArch-$crossOS (basis-library/config/c/$crossArch-crossOS)."
+#ssh $machine "cd $tmp/basis-library/config/c && tar cf - $crossArch-$crossOS" |
+# ( cd "$lib/sml/basis/config/c" && tar xf - )
+cp -pfR "$tmp/basis-library/config/c/$crossArch-$crossOS" \
+ "$lib/sml/basis/config/c/"
+
+echo "* Running make mlbpathmap targetmap in $src."
+#( cd "$src" &&
+# mmake TARGET=$crossTarget TARGET_ARCH=$crossArch TARGET_OS=$crossOS \
+# mlbpathmap targetmap )
+cd "$src"
+$MAKE TARGET=$crossTarget TARGET_ARCH=$crossArch TARGET_OS=$crossOS \
+ mlbpathmap targetmap
+
+case "$crossOS" in
+mingw)
+ #suf='.exe'
+ suf=''
+;;
+*)
+ suf=''
+;;
+esac
+
+# Copied from mlton-script
+case "$crossArch" in
+amd64)
+ archOpts='-m64'
+;;
+hppa)
+ archOpts=''
+;;
+sparc)
+ archOpts='-m32'
+;;
+x86)
+ archOpts=''
+;;
+esac
+
+case "$crossOS" in
+aix)
+ osOpts=''
+;;
+cygwin)
+ osOpts=''
+;;
+darwin)
+ osOpts='-I/opt/local/include -I/sw/include -L/opt/local/lib -L/sw/lib -lgmp'
+;;
+freebsd)
+ osOpts='-I/usr/local/include -L/usr/local/lib/ -lgmp'
+;;
+hpux)
+ osOpts=''
+;;
+linux)
+ osOpts=''
+;;
+mingw)
+ libs='-lws2_32 -lkernel32 -lpsapi -lnetapi32'
+;;
+netbsd)
+ osOpts='-I/usr/pkg/include -Wl,-R/usr/pkg/lib -L/usr/pkg/lib/ -lgmp'
+;;
+openbsd)
+ osOpts='-I/usr/local/include -L/usr/local/lib/ -lgmp'
+;;
+solaris)
+ osOpts='-lnsl -lsocket -lrt'
+;;
+esac
+
+exe='print-constants'
+echo "* Compiling and running print-constants."
+#"$src/build/bin/mlton" -target $crossTarget -build-constants true |
+# ssh $machine "cd $tmp/runtime &&
+# cat >$exe.c &&
+# gcc $archOpts $osOpts -I. -o $exe $exe.c libmlton.a libgdtoa.a -lgmp -lm"
+"$src/build/bin/mlton" -target $crossTarget -build-constants true \
+ > "$tmp/runtime/$exe.c"
+cd "$tmp/runtime/"
+$GCC $archOpts $osOpts -I. -o $exe $exe.c libmlton.a libgdtoa.a -lgmp -lm $libs
+
+#ssh $machine "$tmp/runtime/$exe$suf" >"$lib/$crossTarget/constants"
+$RUN "$tmp/runtime/$exe$suf" > "$lib/$crossTarget/constants"
+#ssh $machine "rm -rf $tmp"
+# rm -rf "$tmp"
+
diff --git a/lang/mlton/files/ml.grm.sig b/lang/mlton/files/ml.grm.sig
new file mode 100644
index 000000000000..7bf0d2ad39fb
--- /dev/null
+++ b/lang/mlton/files/ml.grm.sig
@@ -0,0 +1,88 @@
+signature ML_TOKENS =
+sig
+type ('a,'b) token
+type svalue
+val PRIM: 'a * 'a -> (svalue,'a) token
+val SYMBOL: 'a * 'a -> (svalue,'a) token
+val IMPORT: 'a * 'a -> (svalue,'a) token
+val EXPORT: 'a * 'a -> (svalue,'a) token
+val ADDRESS: 'a * 'a -> (svalue,'a) token
+val CONST: 'a * 'a -> (svalue,'a) token
+val COMMAND_LINE_CONST: 'a * 'a -> (svalue,'a) token
+val BUILD_CONST: 'a * 'a -> (svalue,'a) token
+val WITHTYPE: 'a * 'a -> (svalue,'a) token
+val WITH: 'a * 'a -> (svalue,'a) token
+val WILD: 'a * 'a -> (svalue,'a) token
+val WHILE: 'a * 'a -> (svalue,'a) token
+val WHERE: 'a * 'a -> (svalue,'a) token
+val VAL: 'a * 'a -> (svalue,'a) token
+val TYPE: 'a * 'a -> (svalue,'a) token
+val THEN: 'a * 'a -> (svalue,'a) token
+val STRUCTURE: 'a * 'a -> (svalue,'a) token
+val STRUCT: 'a * 'a -> (svalue,'a) token
+val SIGNATURE: 'a * 'a -> (svalue,'a) token
+val SIG: 'a * 'a -> (svalue,'a) token
+val SHARING: 'a * 'a -> (svalue,'a) token
+val SEMICOLON: 'a * 'a -> (svalue,'a) token
+val RPAREN: 'a * 'a -> (svalue,'a) token
+val REC: 'a * 'a -> (svalue,'a) token
+val RBRACKET: 'a * 'a -> (svalue,'a) token
+val RBRACE: 'a * 'a -> (svalue,'a) token
+val RAISE: 'a * 'a -> (svalue,'a) token
+val OVERLOAD: 'a * 'a -> (svalue,'a) token
+val OPEN: 'a * 'a -> (svalue,'a) token
+val OP: 'a * 'a -> (svalue,'a) token
+val OF: 'a * 'a -> (svalue,'a) token
+val ORELSE: 'a * 'a -> (svalue,'a) token
+val NONFIX: 'a * 'a -> (svalue,'a) token
+val LPAREN: 'a * 'a -> (svalue,'a) token
+val LOCAL: 'a * 'a -> (svalue,'a) token
+val LET: 'a * 'a -> (svalue,'a) token
+val LBRACKET: 'a * 'a -> (svalue,'a) token
+val LBRACE: 'a * 'a -> (svalue,'a) token
+val INFIXR: 'a * 'a -> (svalue,'a) token
+val INFIX: 'a * 'a -> (svalue,'a) token
+val INCLUDE: 'a * 'a -> (svalue,'a) token
+val IN: 'a * 'a -> (svalue,'a) token
+val IF: 'a * 'a -> (svalue,'a) token
+val HASH: 'a * 'a -> (svalue,'a) token
+val HANDLE: 'a * 'a -> (svalue,'a) token
+val FUNCTOR: 'a * 'a -> (svalue,'a) token
+val FUN: 'a * 'a -> (svalue,'a) token
+val FN: 'a * 'a -> (svalue,'a) token
+val DARROW: 'a * 'a -> (svalue,'a) token
+val DO: 'a * 'a -> (svalue,'a) token
+val EXCEPTION: 'a * 'a -> (svalue,'a) token
+val EQTYPE: 'a * 'a -> (svalue,'a) token
+val EQUALOP: 'a * 'a -> (svalue,'a) token
+val EOF: 'a * 'a -> (svalue,'a) token
+val END: 'a * 'a -> (svalue,'a) token
+val ELSE: 'a * 'a -> (svalue,'a) token
+val DOTDOTDOT: 'a * 'a -> (svalue,'a) token
+val DATATYPE: 'a * 'a -> (svalue,'a) token
+val COMMA: 'a * 'a -> (svalue,'a) token
+val COLONGT: 'a * 'a -> (svalue,'a) token
+val COLON: 'a * 'a -> (svalue,'a) token
+val CASE: 'a * 'a -> (svalue,'a) token
+val BAR: 'a * 'a -> (svalue,'a) token
+val ASTERISK: 'a * 'a -> (svalue,'a) token
+val AS: 'a * 'a -> (svalue,'a) token
+val ARROW: 'a * 'a -> (svalue,'a) token
+val ANDALSO: 'a * 'a -> (svalue,'a) token
+val AND: 'a * 'a -> (svalue,'a) token
+val ABSTYPE: 'a * 'a -> (svalue,'a) token
+val WORD: ({ digits:string,radix:StringCvt.radix } ) * 'a * 'a -> (svalue,'a) token
+val TYVAR: (string) * 'a * 'a -> (svalue,'a) token
+val STRING: (IntInf.t vector) * 'a * 'a -> (svalue,'a) token
+val REAL: (string) * 'a * 'a -> (svalue,'a) token
+val LONGID: (string) * 'a * 'a -> (svalue,'a) token
+val INT: ({ digits:string,negate:bool,radix:StringCvt.radix } ) * 'a * 'a -> (svalue,'a) token
+val CHAR: (IntInf.t) * 'a * 'a -> (svalue,'a) token
+end
+signature ML_LRVALS=
+sig
+structure Tokens : ML_TOKENS
+structure ParserData:PARSER_DATA
+sharing type ParserData.Token.token = Tokens.token
+sharing type ParserData.svalue = Tokens.svalue
+end
diff --git a/lang/mlton/files/ml.grm.sml b/lang/mlton/files/ml.grm.sml
new file mode 100644
index 000000000000..86a9cd830154
--- /dev/null
+++ b/lang/mlton/files/ml.grm.sml
@@ -0,0 +1,5497 @@
+
+functor MLLrValsFun (structure Token: TOKEN
+ structure Ast: AST) =
+struct
+structure ParserData=
+struct
+structure Header =
+struct
+(* Heavily modified from SML/NJ sources by sweeks@sweeks.com *)
+
+(* ml.grm
+ *
+ * Copyright 1989,1992 by AT&T Bell Laboratories
+ *)
+
+type int = Int.t
+
+fun reg (left, right) = Region.make {left = left, right = right}
+fun error (reg, msg) = Control.error (reg, Layout.str msg, Layout.empty)
+
+open Ast
+structure Field = Record.Field
+structure Srecord = SortedRecord
+
+structure Type =
+ struct
+ open Type
+
+ val tuple = Record o Srecord.tuple
+
+ val unit = tuple (Vector.new0 ())
+
+ fun arrow (t1, t2) = Con (Longtycon.arrow, Vector.new2 (t1, t2))
+ end
+
+structure DatBind =
+ struct
+ open DatBind
+
+ fun make (dbs, withtypes, left, right) =
+ makeRegion' (T {datatypes = dbs, withtypes = withtypes},
+ left, right)
+ end
+
+structure Pat =
+ struct
+ open Pat
+
+ fun tuple ps =
+ if 1 = Vector.length ps
+ then node (Vector.sub (ps, 0))
+ else Tuple ps
+
+ val unit = tuple (Vector.new0 ())
+
+ val bogus = unit
+
+ fun makeAs (p1: t, p2: t): node =
+ let
+ fun err () =
+ error (Pat.region p1, "must have variable to left in as pattern")
+ fun fixopVar (p : t) =
+ case node p of
+ FlatApp ps =>
+ if 1 = Vector.length ps
+ then (case node (Vector.sub (ps, 0)) of
+ Var {fixop,name} =>
+ (case Longvid.split name of
+ ([], vid) =>
+ SOME (fixop, Vid.toVar vid)
+ | _ =>
+ let
+ val () = err ()
+ in
+ SOME (Fixop.None, Var.bogus)
+ end)
+ | _ => NONE)
+ else NONE
+ | _ => NONE
+ in
+ case fixopVar p1 of
+ SOME (fixop, var) =>
+ Layered {fixop = fixop, var = var,
+ constraint = NONE,
+ pat = p2}
+ | NONE =>
+ case node p1 of
+ Pat.Constraint (p, t) =>
+ (case fixopVar p of
+ SOME (fixop, var) =>
+ Layered {fixop = fixop, var = var,
+ constraint = SOME t,
+ pat = p2}
+ | _ => (err (); bogus))
+ | _ => (err (); bogus)
+ end
+ end
+
+structure Exp =
+ struct
+ open Exp
+
+ fun tuple es =
+ if 1 = Vector.length es
+ then node (Vector.sub (es, 0))
+ else Record (Record.tuple es)
+
+ val unit = tuple (Vector.new0 ())
+ end
+
+structure Dec =
+ struct
+ open Dec
+
+ fun sequence (d1: t, d2: t): t =
+ makeRegion (case (node d1, node d2) of
+ (SeqDec d1, SeqDec d2) => SeqDec (Vector.concat [d1, d2])
+ | (SeqDec d1, _) =>
+ SeqDec (Vector.concat [d1, Vector.new1 d2])
+ | (_, SeqDec d2) =>
+ SeqDec (Vector.concat [Vector.new1 d1, d2])
+ | _ => SeqDec (Vector.new2 (d1, d2)),
+ Region.append (region d1, region d2))
+ end
+
+structure Spec =
+ struct
+ open Spec
+
+ (* Some of this mess is so that a sharing equation captures as
+ * many specs as possible in its scope.
+ *)
+ fun seq (s: t, s': t): t =
+ let
+ fun reg s'' = makeRegion (s'', Region.append (region s, region s'))
+ in
+ case (node s, node s') of
+ (Empty, _) => s'
+ | (_, Empty) => s
+ | (_, Seq (s1, s2)) => reg (Seq (seq (s, s1), s2))
+ | (_, Sharing {spec, equations}) =>
+ reg (Sharing {spec = seq (s, spec), equations = equations})
+ | _ => reg (Seq (s, s'))
+ end
+
+(* val seq = Trace.trace2 ("Spec.seq", layout, layout, layout) seq *)
+ end
+
+fun consTopdec (d, dss) =
+ case dss of
+ [] => [[d]]
+ | ds :: dss => (d :: ds) :: dss
+
+type rule = Pat.t * Exp.t
+type clause = {pats : Pat.t vector,
+ resultType : Type.t option,
+ body : Exp.t}
+type clauses = clause vector
+type eb = Con.t * EbRhs.t
+type db = {tyvars: Tyvar.t vector,
+ tycon: Tycon.t,
+ cons: (Con.t * Type.t option) vector}
+
+type strdesc = Strid.t * Sigexp.t
+
+type wherespec = {tyvars: Tyvar.t vector,
+ longtycon: Longtycon.t,
+ ty: Type.t}
+
+type typdesc = {tyvars: Tyvar.t vector,
+ tycon: Tycon.t}
+
+type valdesc = Var.t * Type.t
+
+type exndesc = Con.t * Type.t option
+
+type strbind = {name: Strid.t,
+ def: Strexp.t,
+ constraint: SigConst.t}
+
+type sigbind = Sigid.t * Sigexp.t
+
+type funbind = {name : Fctid.t,
+ arg : FctArg.t,
+ result : SigConst.t,
+ body : Strexp.t}
+
+type vb = {pat: Pat.t,
+ exp: Exp.t}
+
+type rvb = {pat: Pat.t,
+ match: Match.t}
+
+fun ensureNonqualified (ss: Symbol.t list, r: Region.t): Symbol.t * Region.t =
+ case ss of
+ [s] => (s, r)
+ | _ => (error (r, "expected nonqualified id")
+ ; (Symbol.bogus, r))
+
+fun cons1 (x, (l, r, y)) = (x :: l, r, y)
+
+fun augment (id, sigexp, (wherespecs, right, binds)) =
+ (id, Sigexp.wheree (sigexp, Vector.fromList wherespecs,
+ Region.extendRight (Sigexp.region sigexp, right)))
+ :: binds
+
+fun 'a augment1 ((strexp: Strexp.t,
+ makesigconst: Sigexp.t -> SigConst.t,
+ sigexp: Sigexp.t),
+ (wherespecs: wherespec list,
+ right: SourcePos.t,
+ z: 'a)): Strexp.t * 'a =
+ (Strexp.makeRegion
+ (Strexp.Constrained
+ (strexp, makesigconst (Sigexp.wheree
+ (sigexp, Vector.fromList wherespecs,
+ Region.extendRight (Sigexp.region sigexp, right)))),
+ Region.extendRight (Strexp.region strexp, right)),
+ z)
+
+type 'a whereAnd = wherespec list * SourcePos.t * 'a list
+
+
+end
+structure LrTable = Token.LrTable
+structure Token = Token
+local open LrTable in
+val table=let val actionRows =
+"\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\006\000\113\000\007\000\060\000\013\000\058\000\
+\\039\000\112\000\040\000\111\000\043\000\110\000\047\000\109\000\
+\\053\000\108\000\066\000\107\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\006\000\113\000\007\000\060\000\013\000\058\000\
+\\039\000\112\000\040\000\111\000\043\000\110\000\047\000\109\000\
+\\066\000\107\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\015\000\057\000\
+\\024\000\055\000\029\000\053\000\033\000\050\000\034\000\049\000\
+\\039\000\046\000\040\000\045\000\041\000\044\000\043\000\042\000\
+\\047\000\040\000\050\000\037\000\052\000\151\000\065\000\031\000\
+\\069\000\030\000\070\000\029\000\071\000\028\000\072\000\027\000\
+\\073\000\026\000\074\000\025\000\075\000\024\000\076\000\023\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\015\000\057\000\
+\\024\000\055\000\029\000\053\000\033\000\050\000\034\000\049\000\
+\\039\000\046\000\040\000\045\000\041\000\044\000\043\000\042\000\
+\\047\000\040\000\050\000\037\000\054\000\138\000\065\000\031\000\
+\\069\000\030\000\070\000\029\000\071\000\028\000\072\000\027\000\
+\\073\000\026\000\074\000\025\000\075\000\024\000\076\000\023\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\015\000\057\000\
+\\024\000\055\000\029\000\053\000\033\000\050\000\034\000\049\000\
+\\039\000\046\000\040\000\045\000\041\000\044\000\043\000\042\000\
+\\047\000\040\000\050\000\037\000\065\000\031\000\069\000\030\000\
+\\070\000\029\000\071\000\028\000\072\000\027\000\073\000\026\000\
+\\074\000\025\000\075\000\024\000\076\000\023\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\039\000\112\000\
+\\040\000\111\000\043\000\175\000\047\000\109\000\053\000\108\000\
+\\066\000\107\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\039\000\112\000\
+\\040\000\111\000\043\000\175\000\047\000\109\000\053\000\228\000\
+\\066\000\107\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\039\000\112\000\
+\\040\000\111\000\043\000\175\000\047\000\109\000\066\000\107\000\000\000\
+\\001\000\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\076\000\000\000\
+\\001\000\002\000\064\000\003\000\063\000\013\000\076\000\000\000\
+\\001\000\002\000\064\000\003\000\063\000\013\000\076\000\020\000\241\000\000\000\
+\\001\000\002\000\064\000\003\000\063\000\013\000\076\000\020\000\241\000\
+\\051\000\240\000\000\000\
+\\001\000\002\000\064\000\003\000\063\000\013\000\076\000\051\000\157\000\000\000\
+\\001\000\002\000\064\000\003\000\063\000\013\000\076\000\051\000\042\001\000\000\
+\\001\000\003\000\122\003\008\000\121\003\009\000\121\003\010\000\121\003\
+\\011\000\121\003\012\000\121\003\013\000\122\003\014\000\121\003\
+\\016\000\121\003\017\000\121\003\018\000\121\003\019\000\121\003\
+\\021\000\121\003\022\000\121\003\023\000\121\003\024\000\121\003\
+\\025\000\121\003\026\000\121\003\027\000\121\003\028\000\121\003\
+\\030\000\121\003\031\000\121\003\032\000\121\003\035\000\121\003\
+\\036\000\121\003\037\000\121\003\038\000\121\003\042\000\121\003\
+\\044\000\121\003\045\000\121\003\046\000\121\003\048\000\121\003\
+\\049\000\121\003\051\000\121\003\052\000\121\003\054\000\121\003\
+\\055\000\121\003\056\000\121\003\058\000\121\003\060\000\121\003\
+\\061\000\121\003\062\000\121\003\063\000\121\003\064\000\121\003\
+\\067\000\121\003\068\000\121\003\000\000\
+\\001\000\003\000\063\000\000\000\
+\\001\000\003\000\063\000\006\000\113\000\039\000\206\000\043\000\205\000\000\000\
+\\001\000\003\000\063\000\013\000\058\000\000\000\
+\\001\000\003\000\063\000\013\000\058\000\024\000\055\000\000\000\
+\\001\000\003\000\063\000\013\000\058\000\041\000\163\001\059\000\162\001\000\000\
+\\001\000\003\000\063\000\013\000\058\000\047\000\117\001\000\000\
+\\001\000\003\000\063\000\013\000\058\000\062\000\191\001\000\000\
+\\001\000\003\000\063\000\013\000\076\000\000\000\
+\\001\000\003\000\063\000\013\000\076\000\019\000\210\001\047\000\181\000\000\000\
+\\001\000\003\000\063\000\013\000\076\000\024\000\075\000\000\000\
+\\001\000\003\000\063\000\013\000\076\000\047\000\181\000\000\000\
+\\001\000\003\000\063\000\013\000\076\000\057\000\077\001\000\000\
+\\001\000\003\000\063\000\013\000\076\000\062\000\243\001\000\000\
+\\001\000\003\000\063\000\013\000\035\001\000\000\
+\\001\000\005\000\084\000\000\000\
+\\001\000\005\000\084\000\013\000\086\000\000\000\
+\\001\000\005\000\084\000\013\000\088\000\000\000\
+\\001\000\006\000\113\000\000\000\
+\\001\000\008\000\123\002\009\000\231\001\016\000\126\002\017\000\126\002\
+\\019\000\123\002\022\000\123\002\023\000\123\002\026\000\123\002\
+\\030\000\123\002\031\000\123\002\035\000\123\002\037\000\123\002\
+\\038\000\123\002\042\000\123\002\044\000\123\002\048\000\123\002\
+\\049\000\123\002\054\000\123\002\055\000\123\002\058\000\123\002\
+\\060\000\123\002\062\000\123\002\063\000\123\002\064\000\235\001\000\000\
+\\001\000\008\000\123\002\009\000\053\002\016\000\141\002\017\000\141\002\
+\\019\000\123\002\022\000\123\002\023\000\123\002\026\000\123\002\
+\\030\000\123\002\031\000\123\002\035\000\123\002\037\000\123\002\
+\\038\000\123\002\042\000\123\002\044\000\123\002\048\000\123\002\
+\\049\000\123\002\054\000\123\002\055\000\123\002\058\000\123\002\
+\\060\000\123\002\062\000\123\002\063\000\123\002\064\000\235\001\000\000\
+\\001\000\008\000\123\002\009\000\053\002\016\000\144\002\017\000\144\002\
+\\019\000\123\002\022\000\123\002\023\000\123\002\026\000\123\002\
+\\030\000\123\002\031\000\123\002\035\000\123\002\037\000\123\002\
+\\038\000\123\002\042\000\123\002\044\000\123\002\048\000\123\002\
+\\049\000\123\002\054\000\123\002\055\000\123\002\058\000\123\002\
+\\060\000\123\002\062\000\123\002\063\000\123\002\064\000\235\001\000\000\
+\\001\000\008\000\131\002\009\000\131\002\016\000\128\002\017\000\128\002\
+\\019\000\131\002\022\000\131\002\023\000\131\002\026\000\131\002\
+\\030\000\131\002\031\000\131\002\035\000\131\002\037\000\131\002\
+\\038\000\131\002\042\000\131\002\044\000\131\002\048\000\131\002\
+\\049\000\131\002\054\000\131\002\055\000\131\002\058\000\131\002\
+\\060\000\131\002\062\000\131\002\063\000\131\002\000\000\
+\\001\000\008\000\202\002\009\000\077\002\016\000\126\002\017\000\126\002\
+\\019\000\202\002\023\000\202\002\026\000\202\002\030\000\202\002\
+\\031\000\202\002\037\000\202\002\038\000\202\002\042\000\202\002\
+\\044\000\202\002\048\000\202\002\049\000\202\002\055\000\202\002\
+\\058\000\202\002\060\000\202\002\062\000\202\002\063\000\202\002\
+\\064\000\080\002\000\000\
+\\001\000\008\000\202\002\009\000\092\002\016\000\141\002\017\000\141\002\
+\\019\000\202\002\023\000\202\002\026\000\202\002\030\000\202\002\
+\\031\000\202\002\037\000\202\002\038\000\202\002\042\000\202\002\
+\\044\000\202\002\048\000\202\002\049\000\202\002\055\000\202\002\
+\\058\000\202\002\060\000\202\002\062\000\202\002\063\000\202\002\
+\\064\000\080\002\000\000\
+\\001\000\008\000\202\002\009\000\092\002\016\000\144\002\017\000\144\002\
+\\019\000\202\002\023\000\202\002\026\000\202\002\030\000\202\002\
+\\031\000\202\002\037\000\202\002\038\000\202\002\042\000\202\002\
+\\044\000\202\002\048\000\202\002\049\000\202\002\055\000\202\002\
+\\058\000\202\002\060\000\202\002\062\000\202\002\063\000\202\002\
+\\064\000\080\002\000\000\
+\\001\000\010\000\081\000\016\000\080\000\018\000\255\000\032\000\079\000\
+\\045\000\078\000\055\000\254\000\000\000\
+\\001\000\010\000\081\000\016\000\080\000\021\000\176\001\032\000\079\000\
+\\045\000\078\000\000\000\
+\\001\000\010\000\081\000\016\000\080\000\022\000\174\001\032\000\079\000\
+\\045\000\078\000\055\000\254\000\000\000\
+\\001\000\010\000\081\000\016\000\080\000\027\000\220\000\032\000\079\000\
+\\045\000\078\000\000\000\
+\\001\000\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\
+\\046\000\031\001\000\000\
+\\001\000\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\
+\\055\000\077\000\000\000\
+\\001\000\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\
+\\061\000\012\001\000\000\
+\\001\000\011\000\036\001\012\000\247\001\000\000\
+\\001\000\011\000\036\001\018\000\131\001\054\000\130\001\000\000\
+\\001\000\011\000\036\001\024\000\143\001\000\000\
+\\001\000\011\000\036\001\055\000\135\001\000\000\
+\\001\000\011\000\036\001\055\000\137\001\000\000\
+\\001\000\011\000\036\001\055\000\141\001\000\000\
+\\001\000\011\000\036\001\055\000\142\001\000\000\
+\\001\000\011\000\036\001\055\000\144\001\000\000\
+\\001\000\011\000\036\001\055\000\217\001\000\000\
+\\001\000\011\000\036\001\055\000\218\001\000\000\
+\\001\000\011\000\036\001\055\000\219\001\000\000\
+\\001\000\011\000\036\001\055\000\220\001\000\000\
+\\001\000\012\000\157\003\016\000\157\003\018\000\157\003\024\000\164\003\
+\\051\000\157\003\000\000\
+\\001\000\012\000\224\000\016\000\223\000\024\000\222\000\000\000\
+\\001\000\012\000\224\000\016\000\223\000\024\000\059\001\000\000\
+\\001\000\012\000\224\000\016\000\223\000\028\000\020\001\000\000\
+\\001\000\016\000\208\000\000\000\
+\\001\000\016\000\211\000\000\000\
+\\001\000\016\000\216\000\000\000\
+\\001\000\016\000\217\000\000\000\
+\\001\000\016\000\218\000\000\000\
+\\001\000\016\000\219\000\000\000\
+\\001\000\016\000\044\001\000\000\
+\\001\000\016\000\048\001\000\000\
+\\001\000\016\000\049\001\000\000\
+\\001\000\016\000\050\001\000\000\
+\\001\000\016\000\080\001\000\000\
+\\001\000\016\000\134\001\000\000\
+\\001\000\016\000\177\001\000\000\
+\\001\000\016\000\237\001\017\000\236\001\000\000\
+\\001\000\016\000\237\001\017\000\236\001\022\000\070\002\000\000\
+\\001\000\016\000\237\001\017\000\236\001\054\000\054\002\000\000\
+\\001\000\016\000\252\001\000\000\
+\\001\000\016\000\000\002\000\000\
+\\001\000\022\000\172\001\000\000\
+\\001\000\022\000\173\001\000\000\
+\\001\000\022\000\211\001\000\000\
+\\001\000\022\000\244\001\000\000\
+\\001\000\022\000\248\001\000\000\
+\\001\000\022\000\025\002\000\000\
+\\001\000\023\000\000\000\000\000\
+\\001\000\024\000\247\000\000\000\
+\\001\000\024\000\009\001\000\000\
+\\001\000\024\000\070\001\000\000\
+\\001\000\024\000\071\001\000\000\
+\\001\000\024\000\072\001\000\000\
+\\001\000\024\000\110\001\000\000\
+\\001\000\024\000\119\001\000\000\
+\\001\000\024\000\123\001\000\000\
+\\001\000\024\000\001\002\000\000\
+\\001\000\024\000\037\002\000\000\
+\\001\000\024\000\044\002\000\000\
+\\001\000\024\000\073\002\000\000\
+\\001\000\029\000\147\001\000\000\
+\\001\000\035\000\000\001\000\000\
+\\001\000\035\000\003\001\000\000\
+\\001\000\035\000\088\001\000\000\
+\\001\000\035\000\026\002\000\000\
+\\001\000\043\000\013\001\000\000\
+\\001\000\051\000\010\001\000\000\
+\\001\000\051\000\068\001\000\000\
+\\001\000\051\000\132\001\000\000\
+\\001\000\052\000\007\001\000\000\
+\\001\000\052\000\066\001\000\000\
+\\001\000\054\000\252\000\000\000\
+\\001\000\054\000\253\000\000\000\
+\\001\000\054\000\061\001\000\000\
+\\001\000\054\000\063\001\000\000\
+\\001\000\054\000\129\001\000\000\
+\\001\000\054\000\179\001\000\000\
+\\001\000\054\000\055\002\000\000\
+\\001\000\055\000\013\002\000\000\
+\\001\000\062\000\243\001\000\000\
+\\001\000\067\000\033\001\000\000\
+\\098\002\000\000\
+\\099\002\000\000\
+\\100\002\000\000\
+\\101\002\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\008\000\059\000\013\000\058\000\
+\\015\000\057\000\019\000\056\000\024\000\055\000\026\000\054\000\
+\\029\000\053\000\030\000\052\000\031\000\051\000\033\000\050\000\
+\\034\000\049\000\037\000\048\000\038\000\047\000\039\000\046\000\
+\\040\000\045\000\041\000\044\000\042\000\043\000\043\000\042\000\
+\\044\000\041\000\047\000\040\000\048\000\039\000\049\000\038\000\
+\\050\000\037\000\055\000\036\000\058\000\035\000\060\000\034\000\
+\\062\000\033\000\063\000\032\000\065\000\031\000\069\000\030\000\
+\\070\000\029\000\071\000\028\000\072\000\027\000\073\000\026\000\
+\\074\000\025\000\075\000\024\000\076\000\023\000\000\000\
+\\101\002\008\000\059\000\019\000\056\000\026\000\054\000\030\000\052\000\
+\\031\000\051\000\037\000\048\000\038\000\047\000\042\000\043\000\
+\\044\000\041\000\048\000\039\000\049\000\038\000\055\000\036\000\
+\\058\000\035\000\060\000\034\000\062\000\033\000\063\000\032\000\000\000\
+\\102\002\000\000\
+\\103\002\000\000\
+\\104\002\000\000\
+\\105\002\000\000\
+\\106\002\000\000\
+\\107\002\000\000\
+\\108\002\000\000\
+\\109\002\003\000\063\000\008\000\059\000\013\000\058\000\019\000\056\000\
+\\026\000\054\000\030\000\052\000\037\000\048\000\038\000\047\000\
+\\041\000\163\001\042\000\043\000\044\000\041\000\048\000\039\000\
+\\049\000\038\000\055\000\142\000\059\000\162\001\060\000\034\000\
+\\062\000\033\000\063\000\032\000\000\000\
+\\109\002\008\000\059\000\019\000\056\000\026\000\054\000\030\000\052\000\
+\\037\000\048\000\038\000\047\000\042\000\043\000\044\000\041\000\
+\\048\000\039\000\049\000\038\000\055\000\142\000\060\000\034\000\
+\\062\000\033\000\063\000\032\000\000\000\
+\\110\002\000\000\
+\\111\002\000\000\
+\\112\002\000\000\
+\\113\002\000\000\
+\\114\002\000\000\
+\\115\002\000\000\
+\\116\002\000\000\
+\\117\002\000\000\
+\\118\002\000\000\
+\\119\002\000\000\
+\\120\002\000\000\
+\\121\002\000\000\
+\\122\002\000\000\
+\\123\002\009\000\231\001\000\000\
+\\124\002\000\000\
+\\125\002\000\000\
+\\126\002\064\000\166\001\000\000\
+\\127\002\000\000\
+\\128\002\000\000\
+\\129\002\000\000\
+\\130\002\000\000\
+\\132\002\043\000\239\001\000\000\
+\\133\002\000\000\
+\\134\002\000\000\
+\\135\002\000\000\
+\\136\002\000\000\
+\\137\002\000\000\
+\\138\002\064\000\166\001\000\000\
+\\139\002\000\000\
+\\140\002\000\000\
+\\141\002\009\000\029\002\064\000\166\001\000\000\
+\\142\002\000\000\
+\\143\002\000\000\
+\\144\002\009\000\029\002\064\000\166\001\000\000\
+\\145\002\000\000\
+\\146\002\000\000\
+\\147\002\000\000\
+\\148\002\000\000\
+\\149\002\000\000\
+\\149\002\003\000\063\000\013\000\076\000\000\000\
+\\150\002\000\000\
+\\151\002\009\000\170\001\064\000\169\001\000\000\
+\\151\002\009\000\033\002\064\000\169\001\000\000\
+\\152\002\000\000\
+\\153\002\000\000\
+\\154\002\000\000\
+\\155\002\000\000\
+\\156\002\011\000\036\001\000\000\
+\\157\002\016\000\246\000\017\000\245\000\000\000\
+\\158\002\000\000\
+\\159\002\000\000\
+\\160\002\003\000\063\000\013\000\076\000\019\000\107\001\025\000\106\001\
+\\026\000\105\001\036\000\104\001\055\000\103\001\056\000\102\001\
+\\060\000\101\001\062\000\100\001\063\000\099\001\000\000\
+\\160\002\019\000\107\001\025\000\106\001\026\000\105\001\036\000\104\001\
+\\055\000\103\001\056\000\102\001\060\000\101\001\062\000\100\001\
+\\063\000\099\001\000\000\
+\\161\002\000\000\
+\\162\002\000\000\
+\\163\002\000\000\
+\\164\002\000\000\
+\\165\002\000\000\
+\\166\002\000\000\
+\\167\002\000\000\
+\\168\002\000\000\
+\\169\002\000\000\
+\\170\002\000\000\
+\\171\002\000\000\
+\\172\002\000\000\
+\\173\002\000\000\
+\\174\002\000\000\
+\\175\002\000\000\
+\\176\002\024\000\001\002\000\000\
+\\177\002\000\000\
+\\178\002\024\000\044\002\000\000\
+\\179\002\000\000\
+\\180\002\000\000\
+\\181\002\009\000\066\002\064\000\065\002\000\000\
+\\181\002\009\000\089\002\064\000\065\002\000\000\
+\\182\002\000\000\
+\\183\002\000\000\
+\\184\002\000\000\
+\\185\002\000\000\
+\\186\002\009\000\255\001\000\000\
+\\187\002\000\000\
+\\188\002\000\000\
+\\188\002\024\000\071\001\000\000\
+\\189\002\009\000\253\001\000\000\
+\\190\002\000\000\
+\\191\002\011\000\036\001\000\000\
+\\192\002\009\000\006\002\000\000\
+\\193\002\000\000\
+\\194\002\000\000\
+\\195\002\046\000\008\002\000\000\
+\\196\002\011\000\036\001\000\000\
+\\197\002\000\000\
+\\198\002\000\000\
+\\199\002\000\000\
+\\200\002\000\000\
+\\201\002\000\000\
+\\202\002\009\000\077\002\000\000\
+\\203\002\000\000\
+\\204\002\000\000\
+\\205\002\000\000\
+\\206\002\000\000\
+\\207\002\000\000\
+\\208\002\008\000\059\000\019\000\056\000\026\000\054\000\030\000\052\000\
+\\037\000\048\000\038\000\047\000\042\000\148\000\044\000\041\000\
+\\048\000\039\000\049\000\038\000\055\000\147\000\062\000\033\000\
+\\063\000\032\000\000\000\
+\\209\002\000\000\
+\\210\002\000\000\
+\\211\002\000\000\
+\\212\002\000\000\
+\\213\002\000\000\
+\\214\002\000\000\
+\\215\002\000\000\
+\\216\002\000\000\
+\\217\002\000\000\
+\\218\002\000\000\
+\\219\002\000\000\
+\\220\002\000\000\
+\\221\002\000\000\
+\\222\002\000\000\
+\\223\002\000\000\
+\\224\002\000\000\
+\\225\002\000\000\
+\\226\002\000\000\
+\\227\002\000\000\
+\\228\002\009\000\146\001\010\000\081\000\016\000\080\000\032\000\079\000\
+\\045\000\078\000\000\000\
+\\229\002\000\000\
+\\230\002\000\000\
+\\231\002\000\000\
+\\232\002\009\000\015\002\000\000\
+\\233\002\000\000\
+\\234\002\016\000\018\001\000\000\
+\\235\002\011\000\036\001\000\000\
+\\236\002\009\000\015\001\000\000\
+\\237\002\000\000\
+\\238\002\000\000\
+\\239\002\014\000\016\001\000\000\
+\\240\002\000\000\
+\\241\002\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\000\000\
+\\242\002\000\000\
+\\243\002\000\000\
+\\244\002\009\000\229\001\011\000\036\001\000\000\
+\\245\002\000\000\
+\\246\002\000\000\
+\\247\002\006\000\113\000\043\000\118\000\000\000\
+\\248\002\000\000\
+\\249\002\000\000\
+\\250\002\018\000\062\001\000\000\
+\\251\002\000\000\
+\\252\002\014\000\011\002\000\000\
+\\253\002\000\000\
+\\254\002\046\000\010\002\000\000\
+\\255\002\011\000\036\001\000\000\
+\\000\003\000\000\
+\\001\003\000\000\
+\\002\003\009\000\025\001\000\000\
+\\003\003\000\000\
+\\004\003\000\000\
+\\005\003\000\000\
+\\006\003\024\000\024\001\046\000\023\001\000\000\
+\\007\003\011\000\036\001\000\000\
+\\008\003\000\000\
+\\009\003\000\000\
+\\010\003\002\000\129\000\000\000\
+\\011\003\000\000\
+\\012\003\002\000\129\000\000\000\
+\\013\003\000\000\
+\\014\003\000\000\
+\\015\003\002\000\129\000\000\000\
+\\016\003\000\000\
+\\017\003\000\000\
+\\018\003\000\000\
+\\019\003\000\000\
+\\020\003\000\000\
+\\021\003\000\000\
+\\022\003\000\000\
+\\023\003\000\000\
+\\024\003\000\000\
+\\025\003\000\000\
+\\026\003\000\000\
+\\027\003\000\000\
+\\028\003\000\000\
+\\029\003\000\000\
+\\030\003\009\000\030\001\000\000\
+\\031\003\000\000\
+\\032\003\000\000\
+\\033\003\068\000\029\001\000\000\
+\\034\003\000\000\
+\\035\003\009\000\060\002\000\000\
+\\036\003\000\000\
+\\037\003\000\000\
+\\038\003\014\000\019\001\000\000\
+\\039\003\000\000\
+\\040\003\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\000\000\
+\\041\003\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\000\000\
+\\042\003\000\000\
+\\043\003\018\000\011\001\000\000\
+\\044\003\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\
+\\055\000\254\000\000\000\
+\\045\003\000\000\
+\\046\003\000\000\
+\\046\003\054\000\251\000\000\000\
+\\047\003\000\000\
+\\048\003\010\000\081\000\016\000\080\000\000\000\
+\\049\003\016\000\080\000\000\000\
+\\050\003\011\000\036\001\000\000\
+\\051\003\000\000\
+\\052\003\000\000\
+\\053\003\000\000\
+\\054\003\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\000\000\
+\\055\003\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\000\000\
+\\056\003\010\000\081\000\016\000\080\000\032\000\079\000\045\000\078\000\000\000\
+\\057\003\000\000\
+\\058\003\000\000\
+\\059\003\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\024\000\055\000\
+\\033\000\050\000\039\000\046\000\040\000\045\000\041\000\044\000\
+\\043\000\042\000\047\000\040\000\069\000\030\000\070\000\029\000\
+\\071\000\028\000\072\000\027\000\073\000\026\000\074\000\025\000\
+\\075\000\024\000\076\000\023\000\000\000\
+\\060\003\000\000\
+\\061\003\000\000\
+\\062\003\000\000\
+\\063\003\000\000\
+\\064\003\000\000\
+\\065\003\000\000\
+\\066\003\000\000\
+\\067\003\000\000\
+\\068\003\000\000\
+\\069\003\000\000\
+\\070\003\000\000\
+\\071\003\000\000\
+\\072\003\000\000\
+\\073\003\000\000\
+\\074\003\000\000\
+\\075\003\000\000\
+\\076\003\000\000\
+\\077\003\000\000\
+\\078\003\000\000\
+\\079\003\000\000\
+\\080\003\000\000\
+\\081\003\000\000\
+\\082\003\000\000\
+\\083\003\000\000\
+\\084\003\003\000\063\000\013\000\076\000\000\000\
+\\085\003\000\000\
+\\086\003\003\000\063\000\013\000\076\000\000\000\
+\\087\003\000\000\
+\\088\003\000\000\
+\\089\003\010\000\081\000\016\000\080\000\018\000\255\000\032\000\079\000\
+\\045\000\078\000\000\000\
+\\090\003\010\000\081\000\016\000\080\000\018\000\008\001\032\000\079\000\
+\\045\000\078\000\000\000\
+\\091\003\000\000\
+\\092\003\000\000\
+\\093\003\012\000\224\000\016\000\223\000\000\000\
+\\094\003\011\000\036\001\000\000\
+\\095\003\000\000\
+\\096\003\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\039\000\112\000\
+\\040\000\111\000\043\000\175\000\047\000\109\000\066\000\107\000\000\000\
+\\097\003\000\000\
+\\098\003\000\000\
+\\099\003\000\000\
+\\100\003\000\000\
+\\101\003\000\000\
+\\102\003\000\000\
+\\103\003\000\000\
+\\104\003\000\000\
+\\105\003\000\000\
+\\106\003\000\000\
+\\107\003\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\006\000\113\000\007\000\060\000\013\000\058\000\
+\\039\000\112\000\040\000\111\000\043\000\175\000\047\000\109\000\
+\\066\000\107\000\000\000\
+\\107\003\001\000\065\000\002\000\064\000\003\000\063\000\004\000\062\000\
+\\005\000\061\000\007\000\060\000\013\000\058\000\039\000\112\000\
+\\040\000\111\000\043\000\175\000\047\000\109\000\066\000\107\000\000\000\
+\\108\003\000\000\
+\\109\003\012\000\224\000\016\000\223\000\018\000\065\001\000\000\
+\\110\003\000\000\
+\\111\003\000\000\
+\\112\003\018\000\069\001\000\000\
+\\113\003\000\000\
+\\114\003\012\000\224\000\016\000\223\000\000\000\
+\\115\003\000\000\
+\\116\003\012\000\151\001\000\000\
+\\117\003\012\000\224\000\016\000\223\000\000\000\
+\\118\003\000\000\
+\\119\003\000\000\
+\\120\003\011\000\036\001\000\000\
+\\122\003\000\000\
+\\123\003\000\000\
+\\124\003\000\000\
+\\125\003\000\000\
+\\126\003\000\000\
+\\127\003\000\000\
+\\128\003\000\000\
+\\129\003\000\000\
+\\130\003\011\000\036\001\000\000\
+\\131\003\000\000\
+\\132\003\018\000\133\001\000\000\
+\\133\003\000\000\
+\\134\003\003\000\063\000\013\000\035\001\000\000\
+\\135\003\011\000\036\001\018\000\131\001\000\000\
+\\136\003\000\000\
+\\137\003\000\000\
+\\138\003\000\000\
+\\139\003\000\000\
+\\140\003\000\000\
+\\141\003\000\000\
+\\142\003\000\000\
+\\143\003\000\000\
+\\144\003\000\000\
+\\145\003\000\000\
+\\146\003\000\000\
+\\147\003\000\000\
+\\148\003\000\000\
+\\149\003\000\000\
+\\150\003\000\000\
+\\151\003\000\000\
+\\152\003\000\000\
+\\153\003\000\000\
+\\154\003\000\000\
+\\155\003\000\000\
+\\156\003\000\000\
+\\158\003\003\000\063\000\013\000\076\000\024\000\075\000\000\000\
+\\159\003\000\000\
+\\160\003\000\000\
+\\161\003\000\000\
+\\162\003\000\000\
+\\163\003\000\000\
+\\164\003\000\000\
+\\165\003\000\000\
+\\166\003\000\000\
+\\167\003\000\000\
+\\168\003\003\000\063\000\013\000\076\000\000\000\
+\\169\003\000\000\
+\\170\003\000\000\
+\\171\003\000\000\
+\\172\003\000\000\
+\\173\003\000\000\
+\\174\003\000\000\
+\\175\003\000\000\
+\\176\003\000\000\
+\\177\003\003\000\063\000\013\000\058\000\000\000\
+\\178\003\000\000\
+\"
+val actionRowNumbers =
+"\124\000\171\001\123\000\128\000\
+\\125\000\137\000\129\000\089\001\
+\\181\001\202\001\184\001\170\001\
+\\024\000\121\000\075\001\045\000\
+\\140\000\169\001\092\001\081\001\
+\\089\001\029\000\030\000\031\000\
+\\029\000\029\000\029\000\029\000\
+\\029\000\004\000\000\000\020\001\
+\\022\000\022\000\124\000\004\000\
+\\044\001\017\000\024\000\043\001\
+\\003\000\134\000\237\000\002\000\
+\\012\000\041\001\039\001\004\000\
+\\009\000\022\000\001\000\007\000\
+\\025\000\185\001\020\001\004\000\
+\\182\001\020\001\047\001\173\001\
+\\172\001\183\001\046\001\174\001\
+\\126\000\088\001\090\001\252\000\
+\\187\001\176\001\177\001\186\001\
+\\179\001\180\001\178\001\124\000\
+\\004\000\007\000\016\000\004\000\
+\\087\001\063\000\175\001\116\001\
+\\064\000\114\001\114\001\114\001\
+\\065\000\066\000\067\000\068\000\
+\\043\000\243\000\254\000\005\000\
+\\021\001\122\001\060\000\129\001\
+\\203\001\131\001\125\001\128\001\
+\\126\001\132\001\006\000\024\000\
+\\137\001\138\001\011\000\192\001\
+\\019\001\015\000\015\001\247\000\
+\\032\000\183\000\138\000\195\001\
+\\088\000\130\000\196\001\127\000\
+\\086\001\024\000\045\001\048\001\
+\\251\000\206\001\205\001\091\001\
+\\076\001\111\000\112\000\040\000\
+\\096\001\132\000\101\000\134\000\
+\\134\000\102\000\241\000\240\000\
+\\237\000\237\000\237\000\109\000\
+\\120\001\101\001\194\001\193\001\
+\\089\000\106\000\072\001\095\001\
+\\042\001\040\001\046\000\093\001\
+\\199\001\131\000\105\000\007\000\
+\\245\000\009\001\011\001\012\001\
+\\007\001\066\001\067\001\062\000\
+\\082\001\138\001\035\001\190\001\
+\\250\000\031\001\029\001\022\000\
+\\015\000\051\001\058\001\062\001\
+\\059\001\049\001\248\000\052\001\
+\\044\000\015\000\120\000\188\001\
+\\122\000\078\001\077\001\153\001\
+\\149\001\014\000\028\000\080\001\
+\\150\001\159\001\200\001\016\000\
+\\013\000\079\001\016\000\069\000\
+\\116\001\016\000\114\001\070\000\
+\\071\000\072\000\016\000\016\000\
+\\016\000\016\000\004\000\244\000\
+\\004\000\016\000\007\000\127\001\
+\\000\001\061\000\006\000\130\001\
+\\113\000\023\001\114\000\140\001\
+\\110\000\007\001\107\000\143\001\
+\\059\000\090\000\135\001\144\001\
+\\091\000\191\001\092\000\026\000\
+\\026\000\026\000\073\000\189\001\
+\\207\001\097\001\098\001\099\001\
+\\004\000\004\000\134\000\136\000\
+\\135\000\004\000\238\000\239\000\
+\\103\000\100\001\004\000\004\000\
+\\094\001\009\000\004\000\186\000\
+\\246\000\007\000\007\000\093\000\
+\\016\000\007\000\004\000\034\001\
+\\033\001\016\000\020\000\025\000\
+\\030\001\094\000\056\001\020\001\
+\\020\001\007\000\095\000\237\000\
+\\158\001\016\000\016\000\115\000\
+\\048\000\108\000\162\001\074\000\
+\\155\001\050\000\016\000\117\001\
+\\051\000\115\001\016\000\016\000\
+\\016\000\052\000\053\000\049\000\
+\\054\000\084\001\001\001\124\001\
+\\123\001\100\000\003\001\022\001\
+\\032\000\133\001\139\001\007\000\
+\\134\001\147\001\136\001\010\000\
+\\007\000\016\000\019\000\173\000\
+\\172\000\162\000\185\000\187\000\
+\\184\000\176\000\016\000\074\001\
+\\073\001\118\001\119\001\081\000\
+\\082\000\042\000\237\000\121\001\
+\\070\001\071\001\041\000\075\000\
+\\236\000\190\000\187\000\200\000\
+\\116\000\024\000\020\001\022\000\
+\\021\000\187\000\026\000\022\000\
+\\020\001\020\001\010\001\013\001\
+\\004\000\008\001\068\001\069\001\
+\\036\001\204\001\037\001\017\000\
+\\032\001\023\000\063\001\060\001\
+\\083\001\025\000\083\000\152\001\
+\\164\001\163\001\151\001\015\000\
+\\157\001\016\000\154\001\009\000\
+\\016\000\111\001\055\000\113\001\
+\\056\000\057\000\058\000\104\001\
+\\107\001\008\000\105\001\255\000\
+\\005\000\007\000\024\001\140\001\
+\\146\001\007\000\142\001\145\001\
+\\017\001\150\000\036\000\148\000\
+\\033\000\076\000\141\000\156\000\
+\\134\000\134\000\164\000\163\000\
+\\119\000\084\000\171\000\119\000\
+\\022\000\047\000\139\000\103\001\
+\\102\001\085\000\004\000\026\000\
+\\189\000\183\000\079\000\191\000\
+\\218\000\015\000\192\000\214\000\
+\\193\000\080\000\197\000\202\000\
+\\096\000\015\000\188\000\174\000\
+\\198\000\196\000\221\000\224\000\
+\\015\000\194\000\053\001\057\001\
+\\050\001\195\000\054\001\014\001\
+\\038\001\027\001\061\001\025\001\
+\\015\000\249\000\156\001\166\001\
+\\165\001\161\001\160\001\112\001\
+\\109\001\110\001\108\001\168\001\
+\\118\000\167\001\002\001\005\001\
+\\141\001\148\001\016\001\020\001\
+\\143\000\022\000\152\000\144\000\
+\\142\000\119\000\026\000\026\000\
+\\158\000\133\000\086\000\104\000\
+\\165\000\020\001\175\000\177\000\
+\\178\000\018\000\242\000\085\001\
+\\235\000\097\000\016\000\024\000\
+\\217\000\020\001\026\000\017\000\
+\\201\000\098\000\199\000\197\001\
+\\022\000\223\000\016\000\216\000\
+\\016\000\025\000\055\001\106\001\
+\\004\001\006\000\018\001\149\000\
+\\034\000\155\000\154\000\153\000\
+\\151\000\078\000\117\000\157\000\
+\\019\000\166\000\167\000\119\000\
+\\015\000\179\000\180\000\027\000\
+\\253\000\064\001\201\001\019\000\
+\\220\000\219\000\215\000\208\000\
+\\204\000\203\000\015\000\198\001\
+\\222\000\225\000\028\001\026\001\
+\\006\001\145\000\146\000\027\000\
+\\160\000\161\000\077\000\168\000\
+\\099\000\177\000\018\000\231\000\
+\\037\000\226\000\207\000\119\000\
+\\022\000\206\000\205\000\035\000\
+\\159\000\170\000\169\000\016\000\
+\\181\000\065\001\228\000\022\000\
+\\229\000\227\000\119\000\209\000\
+\\210\000\147\000\182\000\232\000\
+\\038\000\211\000\212\000\027\000\
+\\230\000\233\000\027\000\209\000\
+\\039\000\213\000\234\000\087\000"
+val gotoT =
+"\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\033\000\016\000\045\000\015\000\049\000\014\000\050\000\013\000\
+\\054\000\012\000\064\000\011\000\066\000\010\000\067\000\009\000\
+\\068\000\008\000\076\000\007\000\089\000\095\002\117\000\006\000\
+\\118\000\005\000\134\000\004\000\135\000\003\000\136\000\002\000\
+\\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\033\000\016\000\054\000\012\000\117\000\006\000\118\000\005\000\
+\\134\000\004\000\135\000\003\000\136\000\064\000\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\066\000\008\000\065\000\016\000\018\000\
+\\017\000\017\000\064\000\011\000\066\000\010\000\067\000\009\000\
+\\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\072\000\062\000\071\000\063\000\070\000\068\000\069\000\
+\\161\000\068\000\163\000\067\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\066\000\008\000\080\000\016\000\018\000\
+\\017\000\017\000\064\000\011\000\066\000\010\000\067\000\009\000\
+\\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\130\000\081\000\000\000\
+\\130\000\083\000\000\000\
+\\130\000\085\000\000\000\
+\\130\000\087\000\000\000\
+\\130\000\088\000\000\000\
+\\130\000\089\000\000\000\
+\\130\000\090\000\000\000\
+\\130\000\091\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\092\000\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\098\000\086\000\097\000\151\000\096\000\
+\\154\000\095\000\155\000\094\000\157\000\093\000\168\000\001\000\000\000\
+\\146\000\115\000\147\000\114\000\151\000\096\000\153\000\113\000\
+\\154\000\112\000\000\000\
+\\061\000\119\000\063\000\070\000\068\000\069\000\112\000\118\000\
+\\129\000\117\000\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\099\000\121\000\
+\\107\000\120\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\033\000\016\000\045\000\015\000\049\000\014\000\050\000\123\000\
+\\054\000\012\000\064\000\011\000\066\000\010\000\067\000\009\000\
+\\068\000\008\000\076\000\007\000\117\000\006\000\118\000\005\000\
+\\134\000\004\000\135\000\003\000\136\000\002\000\168\000\001\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\124\000\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\036\000\126\000\088\000\125\000\000\000\
+\\066\000\130\000\068\000\008\000\069\000\129\000\071\000\128\000\000\000\
+\\061\000\072\000\062\000\071\000\063\000\070\000\068\000\069\000\
+\\161\000\131\000\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\135\000\046\000\134\000\048\000\133\000\049\000\132\000\
+\\064\000\011\000\066\000\010\000\067\000\009\000\068\000\008\000\
+\\076\000\007\000\168\000\001\000\000\000\
+\\033\000\016\000\054\000\012\000\117\000\139\000\118\000\005\000\
+\\119\000\138\000\120\000\137\000\000\000\
+\\031\000\144\000\032\000\143\000\033\000\142\000\034\000\141\000\
+\\054\000\012\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\148\000\047\000\147\000\049\000\014\000\064\000\011\000\
+\\066\000\010\000\067\000\009\000\068\000\008\000\076\000\007\000\
+\\168\000\001\000\000\000\
+\\041\000\154\000\042\000\153\000\053\000\152\000\061\000\151\000\
+\\063\000\070\000\064\000\150\000\068\000\069\000\000\000\
+\\036\000\156\000\000\000\
+\\036\000\157\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\158\000\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\053\000\159\000\061\000\151\000\063\000\070\000\064\000\150\000\
+\\068\000\069\000\000\000\
+\\052\000\162\000\055\000\161\000\061\000\160\000\063\000\070\000\
+\\068\000\069\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\168\000\011\000\167\000\
+\\012\000\166\000\013\000\165\000\016\000\101\000\017\000\017\000\
+\\060\000\164\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\151\000\096\000\154\000\163\000\168\000\001\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\078\000\172\000\082\000\171\000\086\000\097\000\
+\\091\000\170\000\092\000\169\000\168\000\001\000\000\000\
+\\015\000\178\000\037\000\177\000\040\000\176\000\061\000\175\000\
+\\063\000\070\000\068\000\069\000\080\000\174\000\000\000\
+\\000\000\
+\\022\000\187\000\024\000\186\000\026\000\185\000\028\000\184\000\
+\\029\000\183\000\030\000\182\000\090\000\181\000\151\000\096\000\
+\\153\000\180\000\154\000\112\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\188\000\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\022\000\190\000\028\000\184\000\029\000\183\000\030\000\182\000\
+\\151\000\096\000\153\000\189\000\154\000\112\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\072\000\062\000\071\000\063\000\070\000\068\000\069\000\
+\\161\000\068\000\163\000\191\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\033\000\016\000\045\000\015\000\049\000\014\000\050\000\192\000\
+\\054\000\012\000\064\000\011\000\066\000\010\000\067\000\009\000\
+\\068\000\008\000\076\000\007\000\117\000\006\000\118\000\005\000\
+\\134\000\004\000\135\000\003\000\136\000\002\000\168\000\001\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\193\000\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\078\000\194\000\082\000\171\000\086\000\097\000\
+\\091\000\170\000\092\000\169\000\168\000\001\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\199\000\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\205\000\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\208\000\063\000\070\000\068\000\069\000\131\000\207\000\000\000\
+\\000\000\
+\\010\000\211\000\061\000\210\000\063\000\070\000\068\000\069\000\000\000\
+\\010\000\212\000\061\000\210\000\063\000\070\000\068\000\069\000\000\000\
+\\010\000\213\000\061\000\210\000\063\000\070\000\068\000\069\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\098\000\086\000\097\000\155\000\094\000\
+\\157\000\219\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\223\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\168\000\001\000\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\225\000\086\000\097\000\093\000\224\000\
+\\168\000\001\000\000\000\
+\\061\000\072\000\062\000\071\000\063\000\070\000\068\000\069\000\
+\\161\000\227\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\231\000\086\000\097\000\087\000\230\000\
+\\151\000\229\000\152\000\228\000\168\000\001\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\231\000\086\000\097\000\087\000\232\000\
+\\168\000\001\000\000\000\
+\\053\000\237\000\061\000\236\000\063\000\070\000\064\000\150\000\
+\\068\000\069\000\084\000\235\000\085\000\234\000\162\000\233\000\000\000\
+\\000\000\
+\\000\000\
+\\063\000\241\000\068\000\069\000\144\000\240\000\000\000\
+\\000\000\
+\\000\000\
+\\151\000\229\000\152\000\228\000\000\000\
+\\102\000\242\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\072\000\062\000\247\000\063\000\070\000\068\000\069\000\
+\\160\000\246\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\066\000\130\000\068\000\008\000\069\000\129\000\071\000\248\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\033\000\016\000\054\000\012\000\117\000\139\000\118\000\005\000\
+\\119\000\255\000\120\000\137\000\000\000\
+\\033\000\016\000\054\000\012\000\117\000\139\000\118\000\005\000\
+\\119\000\000\001\120\000\137\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\031\000\144\000\032\000\143\000\033\000\142\000\034\000\002\001\
+\\054\000\012\000\000\000\
+\\031\000\144\000\032\000\143\000\033\000\142\000\034\000\003\001\
+\\054\000\012\000\000\000\
+\\031\000\144\000\032\000\143\000\033\000\142\000\034\000\004\001\
+\\054\000\012\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\168\000\011\000\167\000\
+\\012\000\166\000\013\000\165\000\016\000\101\000\017\000\017\000\
+\\060\000\012\001\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\019\000\015\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\231\000\086\000\097\000\087\000\230\000\
+\\168\000\001\000\000\000\
+\\038\000\020\001\039\000\019\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\015\000\024\001\061\000\175\000\063\000\070\000\068\000\069\000\000\000\
+\\063\000\241\000\068\000\069\000\144\000\025\001\000\000\
+\\000\000\
+\\000\000\
+\\167\000\026\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\063\000\241\000\068\000\069\000\144\000\030\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\032\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\036\001\
+\\139\000\198\000\140\000\197\000\141\000\035\001\145\000\196\000\
+\\151\000\195\000\000\000\
+\\053\000\039\001\061\000\151\000\063\000\070\000\064\000\150\000\
+\\068\000\069\000\132\000\038\001\133\000\037\001\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\041\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\061\000\208\000\063\000\070\000\068\000\069\000\131\000\043\001\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\044\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\010\000\045\001\061\000\210\000\063\000\070\000\068\000\069\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\049\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\050\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\051\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\052\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\053\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\054\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\055\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\056\001\086\000\097\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\225\000\086\000\097\000\093\000\058\001\
+\\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\014\000\062\001\000\000\
+\\000\000\
+\\019\000\065\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\103\000\074\001\
+\\104\000\073\001\105\000\072\001\107\000\071\001\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\103\000\076\001\
+\\104\000\073\001\105\000\072\001\107\000\071\001\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\104\000\077\001\
+\\105\000\072\001\107\000\071\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\080\001\048\000\079\001\049\000\014\000\064\000\011\000\
+\\066\000\010\000\067\000\009\000\068\000\008\000\076\000\007\000\
+\\168\000\001\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\082\001\046\000\081\001\049\000\014\000\064\000\011\000\
+\\066\000\010\000\067\000\009\000\068\000\008\000\076\000\007\000\
+\\168\000\001\000\000\000\
+\\033\000\016\000\054\000\012\000\117\000\139\000\118\000\005\000\
+\\119\000\083\001\120\000\137\000\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\085\001\048\000\084\001\049\000\014\000\064\000\011\000\
+\\066\000\010\000\067\000\009\000\068\000\008\000\076\000\007\000\
+\\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\148\000\047\000\087\001\049\000\014\000\064\000\011\000\
+\\066\000\010\000\067\000\009\000\068\000\008\000\076\000\007\000\
+\\168\000\001\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\088\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\041\000\154\000\042\000\089\001\053\000\152\000\061\000\151\000\
+\\063\000\070\000\064\000\150\000\068\000\069\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\090\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\051\000\096\001\061\000\119\000\063\000\070\000\068\000\069\000\
+\\098\000\095\001\109\000\094\001\110\000\093\001\111\000\092\001\
+\\129\000\091\001\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\168\000\011\000\167\000\
+\\012\000\166\000\013\000\165\000\016\000\101\000\017\000\017\000\
+\\060\000\106\001\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\168\000\001\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\168\000\011\000\167\000\
+\\012\000\107\001\016\000\101\000\017\000\017\000\064\000\011\000\
+\\066\000\100\000\068\000\008\000\077\000\099\000\168\000\001\000\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\109\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\171\000\086\000\097\000\091\000\170\000\
+\\092\000\110\001\168\000\001\000\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\111\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\112\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\065\000\114\001\066\000\113\001\068\000\008\000\000\000\
+\\015\000\178\000\037\000\177\000\040\000\116\001\061\000\175\000\
+\\063\000\070\000\068\000\069\000\080\000\174\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\146\000\118\001\147\000\114\000\151\000\096\000\153\000\113\000\
+\\154\000\112\000\000\000\
+\\028\000\184\000\030\000\119\001\151\000\096\000\153\000\189\000\
+\\154\000\112\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\078\000\120\001\082\000\171\000\086\000\097\000\
+\\091\000\170\000\092\000\169\000\168\000\001\000\000\000\
+\\000\000\
+\\031\000\144\000\032\000\143\000\033\000\142\000\034\000\122\001\
+\\054\000\012\000\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\125\001\139\000\124\001\
+\\140\000\123\001\151\000\195\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\126\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\134\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\136\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\137\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\138\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\156\000\143\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\151\000\229\000\152\000\146\001\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\147\001\086\000\097\000\168\000\001\000\000\000\
+\\000\000\
+\\079\000\148\001\000\000\
+\\000\000\
+\\053\000\237\000\061\000\236\000\063\000\070\000\064\000\150\000\
+\\068\000\069\000\084\000\235\000\085\000\150\001\162\000\233\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\151\001\086\000\097\000\168\000\001\000\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\152\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\066\000\159\001\068\000\008\000\113\000\158\001\124\000\157\001\
+\\125\000\156\001\126\000\155\001\127\000\154\001\128\000\153\001\000\000\
+\\000\000\
+\\000\000\
+\\165\000\163\001\166\000\162\001\000\000\
+\\000\000\
+\\098\000\095\001\109\000\094\001\110\000\093\001\111\000\165\001\000\000\
+\\000\000\
+\\100\000\166\001\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\169\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\031\000\144\000\032\000\143\000\033\000\142\000\034\000\173\001\
+\\054\000\012\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\098\000\095\001\109\000\094\001\110\000\093\001\111\000\176\001\000\000\
+\\000\000\
+\\000\000\
+\\061\000\072\000\062\000\247\000\063\000\070\000\068\000\069\000\
+\\158\000\180\001\159\000\179\001\160\000\178\001\000\000\
+\\146\000\184\001\147\000\114\000\149\000\183\001\150\000\182\001\
+\\151\000\096\000\153\000\181\001\154\000\112\000\000\000\
+\\061\000\119\000\063\000\070\000\068\000\069\000\121\000\186\001\
+\\129\000\185\001\000\000\
+\\066\000\130\000\068\000\008\000\069\000\188\001\070\000\187\001\000\000\
+\\098\000\095\001\109\000\094\001\110\000\093\001\111\000\190\001\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\103\000\192\001\
+\\104\000\073\001\105\000\072\001\107\000\191\001\000\000\
+\\015\000\195\001\043\000\194\001\044\000\193\001\061\000\175\000\
+\\063\000\070\000\068\000\069\000\000\000\
+\\149\000\183\001\150\000\197\001\151\000\096\000\153\000\196\001\
+\\154\000\112\000\000\000\
+\\023\000\202\001\025\000\201\001\027\000\200\001\028\000\184\000\
+\\029\000\199\001\030\000\182\000\090\000\198\001\151\000\096\000\
+\\153\000\180\000\154\000\112\000\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\203\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\065\000\204\001\066\000\113\001\068\000\008\000\000\000\
+\\000\000\
+\\015\000\178\000\018\000\207\001\020\000\206\001\061\000\175\000\
+\\063\000\070\000\068\000\069\000\080\000\205\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\015\000\178\000\018\000\207\001\020\000\206\001\061\000\175\000\
+\\063\000\070\000\068\000\069\000\080\000\205\001\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\032\001\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\210\001\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\212\001\
+\\139\000\198\000\140\000\197\000\141\000\211\001\145\000\196\000\
+\\151\000\195\000\000\000\
+\\000\000\
+\\053\000\039\001\061\000\151\000\063\000\070\000\064\000\150\000\
+\\068\000\069\000\132\000\038\001\133\000\213\001\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\214\001\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\016\000\221\001\017\000\017\000\021\000\220\001\061\000\219\001\
+\\063\000\070\000\064\000\011\000\068\000\069\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\098\000\086\000\097\000\155\000\222\001\
+\\168\000\001\000\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\078\000\223\001\082\000\171\000\086\000\097\000\
+\\091\000\170\000\092\000\169\000\168\000\001\000\000\000\
+\\000\000\
+\\014\000\224\001\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\225\001\086\000\097\000\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\148\000\226\001\000\000\
+\\000\000\
+\\000\000\
+\\116\000\228\001\000\000\
+\\114\000\232\001\116\000\231\001\165\000\230\001\166\000\162\001\000\000\
+\\000\000\
+\\000\000\
+\\009\000\236\001\000\000\
+\\033\000\016\000\054\000\012\000\117\000\139\000\118\000\005\000\
+\\119\000\238\001\120\000\137\000\000\000\
+\\033\000\016\000\054\000\012\000\117\000\139\000\118\000\005\000\
+\\119\000\239\001\120\000\137\000\000\000\
+\\000\000\
+\\000\000\
+\\164\000\240\001\000\000\
+\\000\000\
+\\000\000\
+\\164\000\243\001\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\099\000\244\001\
+\\107\000\120\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\001\000\020\000\007\000\019\000\016\000\018\000\017\000\017\000\
+\\045\000\247\001\049\000\014\000\064\000\011\000\066\000\010\000\
+\\067\000\009\000\068\000\008\000\076\000\007\000\168\000\001\000\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\103\000\248\001\
+\\104\000\073\001\105\000\072\001\107\000\071\001\000\000\
+\\000\000\
+\\102\000\249\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\063\000\241\000\068\000\069\000\144\000\252\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\001\002\073\000\000\002\000\000\
+\\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\107\000\003\002\
+\\108\000\002\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\143\000\005\002\000\000\
+\\063\000\241\000\068\000\069\000\144\000\007\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\010\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\094\000\012\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\147\000\014\002\151\000\096\000\153\000\113\000\154\000\112\000\000\000\
+\\000\000\
+\\061\000\119\000\063\000\070\000\068\000\069\000\112\000\015\002\
+\\129\000\117\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\164\000\016\002\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\104\000\017\002\
+\\105\000\072\001\107\000\071\001\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\104\000\018\002\
+\\105\000\072\001\107\000\071\001\000\000\
+\\000\000\
+\\033\000\016\000\054\000\012\000\066\000\159\001\068\000\008\000\
+\\117\000\139\000\118\000\005\000\119\000\022\002\120\000\137\000\
+\\124\000\021\002\125\000\020\002\127\000\019\002\128\000\153\001\000\000\
+\\000\000\
+\\000\000\
+\\002\000\026\002\166\000\025\002\000\000\
+\\151\000\096\000\153\000\028\002\154\000\112\000\000\000\
+\\000\000\
+\\100\000\030\002\101\000\029\002\000\000\
+\\000\000\
+\\066\000\010\000\067\000\034\002\068\000\008\000\074\000\033\002\
+\\075\000\032\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\036\002\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\061\000\072\000\062\000\247\000\063\000\070\000\068\000\069\000\
+\\158\000\180\001\159\000\037\002\160\000\178\001\000\000\
+\\000\000\
+\\149\000\183\001\150\000\038\002\151\000\096\000\153\000\196\001\
+\\154\000\112\000\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\104\000\039\002\
+\\105\000\072\001\107\000\071\001\000\000\
+\\066\000\130\000\068\000\008\000\069\000\041\002\070\000\040\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\107\000\003\002\
+\\108\000\043\002\000\000\
+\\015\000\195\001\043\000\194\001\044\000\044\002\061\000\175\000\
+\\063\000\070\000\068\000\069\000\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\045\002\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\046\002\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\015\000\178\000\018\000\207\001\020\000\047\002\061\000\175\000\
+\\063\000\070\000\068\000\069\000\080\000\205\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\104\000\005\000\103\000\006\000\102\000\016\000\101\000\
+\\017\000\017\000\064\000\011\000\066\000\100\000\068\000\008\000\
+\\077\000\099\000\082\000\225\000\086\000\097\000\093\000\048\002\
+\\168\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\002\000\026\002\114\000\050\002\115\000\049\002\116\000\231\001\
+\\166\000\025\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\165\000\230\001\166\000\162\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\066\000\159\001\068\000\008\000\124\000\054\002\125\000\020\002\
+\\127\000\019\002\128\000\153\001\000\000\
+\\000\000\
+\\000\000\
+\\164\000\055\002\000\000\
+\\068\000\202\000\072\000\056\002\000\000\
+\\000\000\
+\\000\000\
+\\061\000\122\000\063\000\070\000\068\000\069\000\099\000\244\001\
+\\107\000\120\000\164\000\057\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\056\000\061\002\066\000\159\001\068\000\008\000\124\000\157\001\
+\\125\000\060\002\126\000\059\002\127\000\154\001\128\000\153\001\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\122\000\062\002\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\066\002\073\000\065\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\061\000\119\000\063\000\070\000\068\000\069\000\112\000\015\002\
+\\129\000\117\000\164\000\067\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\002\000\070\002\166\000\069\002\000\000\
+\\000\000\
+\\100\000\030\002\101\000\072\002\000\000\
+\\066\000\010\000\067\000\034\002\068\000\008\000\074\000\033\002\
+\\075\000\073\002\000\000\
+\\059\000\074\002\000\000\
+\\057\000\077\002\059\000\076\002\165\000\230\001\166\000\162\001\000\000\
+\\000\000\
+\\000\000\
+\\164\000\079\002\000\000\
+\\061\000\119\000\063\000\070\000\068\000\069\000\121\000\080\002\
+\\129\000\185\001\000\000\
+\\000\000\
+\\000\000\
+\\002\000\070\002\114\000\050\002\115\000\081\002\116\000\231\001\
+\\166\000\069\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\068\000\202\000\072\000\201\000\137\000\200\000\138\000\082\002\
+\\139\000\198\000\140\000\197\000\145\000\196\000\151\000\195\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\052\000\162\000\055\000\083\002\061\000\160\000\063\000\070\000\
+\\068\000\069\000\000\000\
+\\000\000\
+\\000\000\
+\\164\000\084\002\000\000\
+\\122\000\086\002\123\000\085\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\002\000\026\002\057\000\089\002\058\000\088\002\059\000\076\002\
+\\166\000\025\002\000\000\
+\\000\000\
+\\000\000\
+\\061\000\119\000\063\000\070\000\068\000\069\000\121\000\080\002\
+\\129\000\185\001\164\000\091\002\000\000\
+\\000\000\
+\\000\000\
+\\052\000\162\000\055\000\083\002\061\000\160\000\063\000\070\000\
+\\068\000\069\000\164\000\092\002\000\000\
+\\122\000\086\002\123\000\093\002\000\000\
+\\002\000\070\002\057\000\089\002\058\000\094\002\059\000\076\002\
+\\166\000\069\002\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\"
+val numstates = 608
+val numrules = 337
+val s = ref "" and index = ref 0
+val string_to_int = fn () =>
+let val i = !index
+in index := i+2; Char.ord(String.sub(!s,i)) + Char.ord(String.sub(!s,i+1)) * 256
+end
+val string_to_list = fn s' =>
+ let val len = String.size s'
+ fun f () =
+ if !index < len then string_to_int() :: f()
+ else nil
+ in index := 0; s := s'; f ()
+ end
+val string_to_pairlist = fn (conv_key,conv_entry) =>
+ let fun f () =
+ case string_to_int()
+ of 0 => EMPTY
+ | n => PAIR(conv_key (n-1),conv_entry (string_to_int()),f())
+ in f
+ end
+val string_to_pairlist_default = fn (conv_key,conv_entry) =>
+ let val conv_row = string_to_pairlist(conv_key,conv_entry)
+ in fn () =>
+ let val default = conv_entry(string_to_int())
+ val row = conv_row()
+ in (row,default)
+ end
+ end
+val string_to_table = fn (convert_row,s') =>
+ let val len = String.size s'
+ fun f ()=
+ if !index < len then convert_row() :: f()
+ else nil
+ in (s := s'; index := 0; f ())
+ end
+local
+ val memo = Array.array(numstates+numrules,ERROR)
+ val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1))
+ fun f i =
+ if i=numstates then g i
+ else (Array.update(memo,i,SHIFT (STATE i)); f (i+1))
+ in f 0 handle Subscript => ()
+ end
+in
+val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub(memo,(j-2))
+end
+val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
+val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
+val actionRowNumbers = string_to_list actionRowNumbers
+val actionT = let val actionRowLookUp=
+let val a=Array.fromList(actionRows) in fn i=>Array.sub(a,i) end
+in Array.fromList(map actionRowLookUp actionRowNumbers)
+end
+in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
+numStates=numstates,initialState=STATE 0}
+end
+end
+local open Header in
+type pos = SourcePos.t
+type arg = unit
+structure MlyValue =
+struct
+datatype svalue = VOID | ntVOID of unit -> unit
+ | WORD of unit -> ({ digits:string,radix:StringCvt.radix } )
+ | TYVAR of unit -> (string) | STRING of unit -> (IntInf.t vector)
+ | REAL of unit -> (string) | LONGID of unit -> (string)
+ | INT of unit -> ({ digits:string,negate:bool,radix:StringCvt.radix } )
+ | CHAR of unit -> (IntInf.t) | word of unit -> (IntInf.t)
+ | withtypes of unit -> (TypBind.t)
+ | wherespecs' of unit -> (wherespec list)
+ | wherespecs of unit -> (wherespec vector)
+ | wherespec of unit -> (wherespec) | vids of unit -> (Vid.t list)
+ | vidNoEqual of unit -> (Vid.t) | vid of unit -> (Vid.t)
+ | var of unit -> (Var.t) | valdescs of unit -> (valdesc list)
+ | valdesc of unit -> (valdesc)
+ | valbindTop of unit -> (vb vector*rvb vector)
+ | valbindRest of unit -> (vb list*rvb list)
+ | valbind of unit -> (vb list*rvb list)
+ | tyvarseq of unit -> (Tyvar.t vector)
+ | tyvars of unit -> (Tyvar.t vector)
+ | tyvar_pc of unit -> (Tyvar.t list) | tyvar of unit -> (Tyvar.t)
+ | typdescs of unit -> (typdesc list) | typdesc of unit -> (typdesc)
+ | typBind'' of unit -> ({ def:Type.t,tycon:Tycon.t,tyvars:Tyvar.t vector } list)
+ | typBind' of unit -> ({ def:Type.t,tycon:Tycon.t,tyvars:Tyvar.t vector } list)
+ | typBind of unit -> (TypBind.t) | tynode of unit -> (Type.node)
+ | tycon of unit -> (Tycon.t) | tyOpt of unit -> (Type.t option)
+ | ty1 of unit -> (Type.t) | ty0_pc of unit -> (Type.t list)
+ | ty'node of unit -> (Type.node) | ty' of unit -> (Type.t)
+ | ty of unit -> (Type.t) | tuple_ty of unit -> (Type.t list)
+ | topdecs of unit -> (Topdec.t list list)
+ | topdecnode of unit -> (Topdec.node)
+ | topdec of unit -> (Topdec.t)
+ | tlabels of unit -> ( ( Field.t * Type.t ) list)
+ | tlabel of unit -> ( ( Field.t * Type.t ) )
+ | symattributes of unit -> (PrimKind.SymbolAttribute.t list)
+ | string of unit -> (string) | strid of unit -> (Strid.t)
+ | strexpnode of unit -> (Strexp.node)
+ | strexp2node of unit -> (Strexp.node)
+ | strexp2 of unit -> (Strexp.t)
+ | strexp1 of unit -> (Strexp.t* ( Sigexp.t -> SigConst.t ) *Sigexp.t)
+ | strexp of unit -> (Strexp.t)
+ | strdescs'' of unit -> (strdesc whereAnd)
+ | strdescs' of unit -> (strdesc whereAnd)
+ | strdescs of unit -> (strdesc list)
+ | strdecsnode of unit -> (Strdec.node)
+ | strdecs of unit -> (Strdec.t)
+ | strdecnode of unit -> (Strdec.node)
+ | strdec of unit -> (Strdec.t)
+ | strbinds'2 of unit -> (strbind list)
+ | strbinds'1' of unit -> (strbind whereAnd)
+ | strbinds'1 of unit -> (strbind whereAnd)
+ | strbinds' of unit -> (Strexp.t*strbind list)
+ | strbinds of unit -> (strbind list) | specs of unit -> (Spec.t)
+ | specnode of unit -> (Spec.node) | spec of unit -> (Spec.t)
+ | sigids of unit -> (Sigid.t list) | sigid of unit -> (Sigid.t)
+ | sigexpnode of unit -> (Sigexp.node)
+ | sigexp'node of unit -> (Sigexp.node)
+ | sigexp' of unit -> (Sigexp.t) | sigexp of unit -> (Sigexp.t)
+ | sigconst of unit -> (SigConst.t)
+ | sigbinds'' of unit -> (sigbind whereAnd)
+ | sigbinds' of unit -> (sigbind whereAnd)
+ | sigbinds of unit -> (sigbind list)
+ | sharespec of unit -> (Equation.node)
+ | sdecsPlus of unit -> (Dec.t) | sdecs of unit -> (Dec.t)
+ | sdec of unit -> (Dec.t) | rvalbindRest of unit -> (rvb list)
+ | rvalbind of unit -> (rvb list) | rules of unit -> (rule list)
+ | rule of unit -> (rule) | repl of unit -> (DatatypeRhs.node)
+ | program of unit -> (Program.t) | priority of unit -> (Priority.t)
+ | pats of unit -> (Pat.t list) | patnode of unit -> (Pat.node)
+ | patitems of unit -> ( ( (Field.t * Pat.Item.t) list * bool ) )
+ | patitem of unit -> ( ( Field.t * Pat.Item.t ) )
+ | pat_2c of unit -> (Pat.t list) | pat of unit -> (Pat.t)
+ | ot_list of unit -> (Exp.t list) | opcon of unit -> (Con.t)
+ | opaspat of unit -> (Pat.t option) | match of unit -> (Match.t)
+ | longvidNoEqual of unit -> (Longvid.t)
+ | longvid of unit -> (Longvid.t)
+ | longvarands of unit -> (Longvar.t list)
+ | longvar of unit -> (Longvar.t)
+ | longtyconeqns of unit -> (Longtycon.t list)
+ | longtycon of unit -> (Longtycon.t)
+ | longstrids of unit -> (Longstrid.t list)
+ | longstrideqns of unit -> (Longstrid.t list)
+ | longstrid of unit -> (Longstrid.t)
+ | longidNoAsterisk of unit -> (Symbol.t list*Region.t)
+ | longidEqual of unit -> (Symbol.t list*Region.t)
+ | longid of unit -> (Symbol.t list*Region.t)
+ | longcon of unit -> (Longcon.t) | int of unit -> (IntInf.t)
+ | idNoAsterisk of unit -> (Symbol.t*Region.t)
+ | idEqual of unit -> (Symbol.t*Region.t)
+ | id of unit -> (Symbol.t*Region.t)
+ | funs of unit -> (clauses list)
+ | funbinds'2 of unit -> (funbind list)
+ | funbinds'1' of unit -> (funbind whereAnd)
+ | funbinds'1 of unit -> (funbind whereAnd)
+ | funbinds' of unit -> (Strexp.t*funbind list)
+ | funbinds of unit -> (funbind list) | fixity of unit -> (Fixity.t)
+ | field of unit -> (Field.t) | fctid of unit -> (Fctid.t)
+ | fctarg of unit -> (FctArg.node)
+ | expsAndTopdecs of unit -> (Topdec.t list list)
+ | expnode of unit -> (Exp.node) | exp_ps of unit -> (Exp.t list)
+ | exp_list of unit -> (Exp.t list) | exp_2c of unit -> (Exp.t list)
+ | exp of unit -> (Exp.t) | exndescs of unit -> (exndesc list)
+ | exndesc of unit -> (exndesc)
+ | elabels of unit -> ( ( Field.t * Exp.t ) list)
+ | elabel of unit -> ( ( Field.t * Exp.t ) )
+ | ebs of unit -> (eb list) | ebrhsnode of unit -> (EbRhs.node)
+ | ebrhs of unit -> (EbRhs.t) | eb of unit -> (eb)
+ | digit of unit -> (int) | decsnode of unit -> (Dec.node)
+ | decs of unit -> (Dec.t) | decnolocal of unit -> (Dec.node)
+ | decnode of unit -> (Dec.node) | dec of unit -> (Dec.t)
+ | dbs' of unit -> (db list) | dbs of unit -> (db vector)
+ | db of unit -> (db)
+ | datatypeRhsnodeNoWithtype of unit -> (DatatypeRhs.node)
+ | datatypeRhsnode of unit -> (DatatypeRhs.node)
+ | datatypeRhsNoWithtype of unit -> (DatatypeRhs.t)
+ | datatypeRhs of unit -> (DatatypeRhs.t)
+ | datBindNoWithtype of unit -> (DatBind.t)
+ | datBind of unit -> (DatBind.t) | constOrBool of unit -> (Const.t)
+ | constrs of unit -> ( ( Con.t * Type.t option ) list)
+ | constraint of unit -> (Type.t option)
+ | constr of unit -> (Con.t*Type.t option)
+ | const' of unit -> (Const.node) | const of unit -> (Const.t)
+ | con of unit -> (Con.t) | commapats of unit -> (Pat.t list)
+ | clausesTop of unit -> (clauses)
+ | clauses of unit -> (clause list) | clause of unit -> (clause)
+ | ieattributes of unit -> (PrimKind.ImportExportAttribute.t list)
+ | arg_fct of unit -> (Strexp.t) | app_exp1 of unit -> (Exp.t list)
+ | app_exp of unit -> (Exp.t list) | apats of unit -> (Pat.t list)
+ | apatnode of unit -> (Pat.node) | apat' of unit -> (Pat.t)
+ | apat of unit -> (Pat.t) | andspecs of unit -> (wherespec list)
+ | aexp of unit -> (Exp.node)
+end
+type svalue = MlyValue.svalue
+type result = Program.t
+end
+structure EC=
+struct
+open LrTable
+infix 5 $$
+fun x $$ y = y::x
+val is_keyword =
+fn (T 7) => true | (T 8) => true | (T 11) => true | (T 14) => true |
+(T 18) => true | (T 19) => true | (T 20) => true | (T 21) => true |
+(T 24) => true | (T 25) => true | (T 26) => true | (T 27) => true |
+(T 28) => true | (T 29) => true | (T 30) => true | (T 31) => true |
+(T 33) => true | (T 34) => true | (T 35) => true | (T 36) => true |
+(T 37) => true | (T 40) => true | (T 41) => true | (T 43) => true |
+(T 45) => true | (T 46) => true | (T 47) => true | (T 48) => true |
+(T 49) => true | (T 52) => true | (T 55) => true | (T 56) => true |
+(T 57) => true | (T 58) => true | (T 59) => true | (T 60) => true |
+(T 61) => true | (T 62) => true | (T 64) => true | (T 63) => true |
+(T 66) => true | (T 67) => true | (T 44) => true | (T 9) => true | _ => false
+val preferred_change : (term list * term list) list =
+(nil
+,nil
+ $$ (T 62))::
+(nil
+,nil
+ $$ (T 60))::
+(nil
+,nil
+ $$ (T 20))::
+(nil
+,nil
+ $$ (T 42))::
+(nil
+,nil
+ $$ (T 54))::
+(nil
+ $$ (T 27),nil
+ $$ (T 23))::
+(nil
+ $$ (T 23),nil
+ $$ (T 27))::
+(nil
+ $$ (T 8),nil
+ $$ (T 9))::
+(nil
+ $$ (T 15),nil
+ $$ (T 45))::
+(nil
+ $$ (T 54),nil
+ $$ (T 17))::
+(nil
+ $$ (T 17),nil
+ $$ (T 54))::
+(nil
+,nil
+ $$ (T 21) $$ (T 2) $$ (T 34))::
+(nil
+,nil
+ $$ (T 2) $$ (T 20))::
+nil
+val noShift =
+fn (T 22) => true | _ => false
+val showTerminal =
+fn (T 0) => "CHAR"
+ | (T 1) => "INT"
+ | (T 2) => "LONGID"
+ | (T 3) => "REAL"
+ | (T 4) => "STRING"
+ | (T 5) => "TYVAR"
+ | (T 6) => "WORD"
+ | (T 7) => "ABSTYPE"
+ | (T 8) => "AND"
+ | (T 9) => "ANDALSO"
+ | (T 10) => "ARROW"
+ | (T 11) => "AS"
+ | (T 12) => "ASTERISK"
+ | (T 13) => "BAR"
+ | (T 14) => "CASE"
+ | (T 15) => "COLON"
+ | (T 16) => "COLONGT"
+ | (T 17) => "COMMA"
+ | (T 18) => "DATATYPE"
+ | (T 19) => "DOTDOTDOT"
+ | (T 20) => "ELSE"
+ | (T 21) => "END"
+ | (T 22) => "EOF"
+ | (T 23) => "EQUALOP"
+ | (T 24) => "EQTYPE"
+ | (T 25) => "EXCEPTION"
+ | (T 26) => "DO"
+ | (T 27) => "DARROW"
+ | (T 28) => "FN"
+ | (T 29) => "FUN"
+ | (T 30) => "FUNCTOR"
+ | (T 31) => "HANDLE"
+ | (T 32) => "HASH"
+ | (T 33) => "IF"
+ | (T 34) => "IN"
+ | (T 35) => "INCLUDE"
+ | (T 36) => "INFIX"
+ | (T 37) => "INFIXR"
+ | (T 38) => "LBRACE"
+ | (T 39) => "LBRACKET"
+ | (T 40) => "LET"
+ | (T 41) => "LOCAL"
+ | (T 42) => "LPAREN"
+ | (T 43) => "NONFIX"
+ | (T 44) => "ORELSE"
+ | (T 45) => "OF"
+ | (T 46) => "OP"
+ | (T 47) => "OPEN"
+ | (T 48) => "OVERLOAD"
+ | (T 49) => "RAISE"
+ | (T 50) => "RBRACE"
+ | (T 51) => "RBRACKET"
+ | (T 52) => "REC"
+ | (T 53) => "RPAREN"
+ | (T 54) => "SEMICOLON"
+ | (T 55) => "SHARING"
+ | (T 56) => "SIG"
+ | (T 57) => "SIGNATURE"
+ | (T 58) => "STRUCT"
+ | (T 59) => "STRUCTURE"
+ | (T 60) => "THEN"
+ | (T 61) => "TYPE"
+ | (T 62) => "VAL"
+ | (T 63) => "WHERE"
+ | (T 64) => "WHILE"
+ | (T 65) => "WILD"
+ | (T 66) => "WITH"
+ | (T 67) => "WITHTYPE"
+ | (T 68) => "BUILD_CONST"
+ | (T 69) => "COMMAND_LINE_CONST"
+ | (T 70) => "CONST"
+ | (T 71) => "ADDRESS"
+ | (T 72) => "EXPORT"
+ | (T 73) => "IMPORT"
+ | (T 74) => "SYMBOL"
+ | (T 75) => "PRIM"
+ | _ => "bogus-term"
+local open Header in
+val errtermvalue=
+fn (T 0) => MlyValue.CHAR(fn () => (IntInf.fromInt (Char.ord #"a"))) |
+(T 1) => MlyValue.INT(fn () => (
+{digits = "0", negate = false, radix = StringCvt.DEC})) |
+(T 2) => MlyValue.LONGID(fn () => ("bogus")) |
+(T 3) => MlyValue.REAL(fn () => ("13.0")) |
+(T 4) => MlyValue.STRING(fn () => (Vector.fromList [])) |
+(T 5) => MlyValue.TYVAR(fn () => ("'a")) |
+(T 6) => MlyValue.WORD(fn () => ({digits = "0", radix = StringCvt.DEC}
+)) |
+_ => MlyValue.VOID
+end
+val terms : term list = nil
+ $$ (T 75) $$ (T 74) $$ (T 73) $$ (T 72) $$ (T 71) $$ (T 70) $$ (T 69)
+ $$ (T 68) $$ (T 67) $$ (T 66) $$ (T 65) $$ (T 64) $$ (T 63) $$ (T 62)
+ $$ (T 61) $$ (T 60) $$ (T 59) $$ (T 58) $$ (T 57) $$ (T 56) $$ (T 55)
+ $$ (T 54) $$ (T 53) $$ (T 52) $$ (T 51) $$ (T 50) $$ (T 49) $$ (T 48)
+ $$ (T 47) $$ (T 46) $$ (T 45) $$ (T 44) $$ (T 43) $$ (T 42) $$ (T 41)
+ $$ (T 40) $$ (T 39) $$ (T 38) $$ (T 37) $$ (T 36) $$ (T 35) $$ (T 34)
+ $$ (T 33) $$ (T 32) $$ (T 31) $$ (T 30) $$ (T 29) $$ (T 28) $$ (T 27)
+ $$ (T 26) $$ (T 25) $$ (T 24) $$ (T 23) $$ (T 22) $$ (T 21) $$ (T 20)
+ $$ (T 19) $$ (T 18) $$ (T 17) $$ (T 16) $$ (T 15) $$ (T 14) $$ (T 13)
+ $$ (T 12) $$ (T 11) $$ (T 10) $$ (T 9) $$ (T 8) $$ (T 7)end
+structure Actions =
+struct
+type int = Int.int
+exception mlyAction of int
+local open Header in
+val actions =
+fn (i392:int,defaultPos,stack,
+ (()):arg) =>
+case (i392,stack)
+of ( 0, ( ( _, ( MlyValue.expsAndTopdecs expsAndTopdecs1,
+expsAndTopdecs1left, expsAndTopdecs1right)) :: rest671)) => let val
+result = MlyValue.program (fn _ => let val (expsAndTopdecs as
+expsAndTopdecs1) = expsAndTopdecs1 ()
+ in (Program.T expsAndTopdecs)
+end)
+ in ( LrTable.NT 88, ( result, expsAndTopdecs1left,
+expsAndTopdecs1right), rest671)
+end
+| ( 1, ( ( _, ( MlyValue.expsAndTopdecs expsAndTopdecs1, _,
+expsAndTopdecs1right)) :: _ :: ( _, ( MlyValue.exp exp1, exp1left, _))
+ :: rest671)) => let val result = MlyValue.expsAndTopdecs (fn _ =>
+ let val (exp as exp1) = exp1 ()
+ val (expsAndTopdecs as expsAndTopdecs1) = expsAndTopdecs1 ()
+ in ([Topdec.fromExp exp] :: expsAndTopdecs)
+end)
+ in ( LrTable.NT 49, ( result, exp1left, expsAndTopdecs1right),
+rest671)
+end
+| ( 2, ( ( _, ( MlyValue.topdecs topdecs1, topdecs1left,
+topdecs1right)) :: rest671)) => let val result =
+MlyValue.expsAndTopdecs (fn _ => let val (topdecs as topdecs1) =
+topdecs1 ()
+ in (topdecs)
+end)
+ in ( LrTable.NT 49, ( result, topdecs1left, topdecs1right), rest671)
+
+end
+| ( 3, ( rest671)) => let val result = MlyValue.topdecs (fn _ => ([]
+))
+ in ( LrTable.NT 135, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 4, ( ( _, ( MlyValue.topdecs topdecs1, _, topdecs1right)) :: ( _,
+ ( MlyValue.topdec topdec1, topdec1left, _)) :: rest671)) => let val
+result = MlyValue.topdecs (fn _ => let val (topdec as topdec1) =
+topdec1 ()
+ val (topdecs as topdecs1) = topdecs1 ()
+ in (consTopdec (topdec, topdecs))
+end)
+ in ( LrTable.NT 135, ( result, topdec1left, topdecs1right), rest671)
+
+end
+| ( 5, ( ( _, ( MlyValue.expsAndTopdecs expsAndTopdecs1, _,
+expsAndTopdecs1right)) :: ( _, ( _, SEMICOLON1left, _)) :: rest671))
+ => let val result = MlyValue.topdecs (fn _ => let val (
+expsAndTopdecs as expsAndTopdecs1) = expsAndTopdecs1 ()
+ in ([] :: expsAndTopdecs)
+end)
+ in ( LrTable.NT 135, ( result, SEMICOLON1left, expsAndTopdecs1right),
+ rest671)
+end
+| ( 6, ( ( _, ( MlyValue.topdecnode topdecnode1, (topdecnodeleft as
+topdecnode1left), (topdecnoderight as topdecnode1right))) :: rest671))
+ => let val result = MlyValue.topdec (fn _ => let val (topdecnode
+ as topdecnode1) = topdecnode1 ()
+ in (
+Topdec.makeRegion' (topdecnode,
+ topdecnodeleft,
+ topdecnoderight)
+)
+end)
+ in ( LrTable.NT 133, ( result, topdecnode1left, topdecnode1right),
+rest671)
+end
+| ( 7, ( ( _, ( MlyValue.strdec strdec1, strdec1left, strdec1right))
+ :: rest671)) => let val result = MlyValue.topdecnode (fn _ => let
+ val (strdec as strdec1) = strdec1 ()
+ in (Topdec.Strdec strdec)
+end)
+ in ( LrTable.NT 134, ( result, strdec1left, strdec1right), rest671)
+
+end
+| ( 8, ( ( _, ( MlyValue.sigbinds sigbinds1, _, sigbinds1right)) :: (
+ _, ( _, SIGNATURE1left, _)) :: rest671)) => let val result =
+MlyValue.topdecnode (fn _ => let val (sigbinds as sigbinds1) =
+sigbinds1 ()
+ in (
+let
+ val sigbinds = Vector.fromList sigbinds
+ val d = Topdec.Signature sigbinds
+ in
+ d
+ end
+)
+end)
+ in ( LrTable.NT 134, ( result, SIGNATURE1left, sigbinds1right),
+rest671)
+end
+| ( 9, ( ( _, ( MlyValue.funbinds funbinds1, _, funbinds1right)) :: (
+ _, ( _, FUNCTOR1left, _)) :: rest671)) => let val result =
+MlyValue.topdecnode (fn _ => let val (funbinds as funbinds1) =
+funbinds1 ()
+ in (Topdec.Functor (Vector.fromList funbinds))
+end)
+ in ( LrTable.NT 134, ( result, FUNCTOR1left, funbinds1right), rest671
+)
+end
+| ( 10, ( ( _, ( MlyValue.strdecsnode strdecsnode1, (strdecsnodeleft
+ as strdecsnode1left), (strdecsnoderight as strdecsnode1right))) ::
+rest671)) => let val result = MlyValue.strdecs (fn _ => let val (
+strdecsnode as strdecsnode1) = strdecsnode1 ()
+ in (
+Strdec.makeRegion'
+ (strdecsnode, strdecsnodeleft, strdecsnoderight)
+)
+end)
+ in ( LrTable.NT 118, ( result, strdecsnode1left, strdecsnode1right),
+rest671)
+end
+| ( 11, ( rest671)) => let val result = MlyValue.strdecsnode (fn _
+ => (Strdec.Seq []))
+ in ( LrTable.NT 119, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 12, ( ( _, ( MlyValue.strdecs strdecs1, _, strdecs1right)) :: ( _
+, ( _, SEMICOLON1left, _)) :: rest671)) => let val result =
+MlyValue.strdecsnode (fn _ => let val (strdecs as strdecs1) =
+strdecs1 ()
+ in (Strdec.Seq [strdecs])
+end)
+ in ( LrTable.NT 119, ( result, SEMICOLON1left, strdecs1right),
+rest671)
+end
+| ( 13, ( ( _, ( MlyValue.strdecs strdecs1, _, strdecs1right)) :: ( _
+, ( MlyValue.strdec strdec1, strdec1left, _)) :: rest671)) => let val
+ result = MlyValue.strdecsnode (fn _ => let val (strdec as strdec1) =
+ strdec1 ()
+ val (strdecs as strdecs1) = strdecs1 ()
+ in (Strdec.Seq [strdec, strdecs])
+end)
+ in ( LrTable.NT 119, ( result, strdec1left, strdecs1right), rest671)
+
+end
+| ( 14, ( ( _, ( MlyValue.strdecnode strdecnode1, (strdecnodeleft as
+strdecnode1left), (strdecnoderight as strdecnode1right))) :: rest671))
+ => let val result = MlyValue.strdec (fn _ => let val (strdecnode
+ as strdecnode1) = strdecnode1 ()
+ in (
+Strdec.makeRegion' (strdecnode,
+ strdecnodeleft, strdecnoderight)
+)
+end)
+ in ( LrTable.NT 116, ( result, strdecnode1left, strdecnode1right),
+rest671)
+end
+| ( 15, ( ( _, ( MlyValue.strbinds strbinds1, _, strbinds1right)) ::
+( _, ( _, STRUCTURE1left, _)) :: rest671)) => let val result =
+MlyValue.strdecnode (fn _ => let val (strbinds as strbinds1) =
+strbinds1 ()
+ in (
+let
+ val strbinds = Vector.fromList strbinds
+ val d = Strdec.Structure strbinds
+
+
+
+ in
+ d
+ end
+)
+end)
+ in ( LrTable.NT 117, ( result, STRUCTURE1left, strbinds1right),
+rest671)
+end
+| ( 16, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.strdecs
+strdecs2, _, _)) :: _ :: ( _, ( MlyValue.strdecs strdecs1, _, _)) :: (
+ _, ( _, LOCAL1left, _)) :: rest671)) => let val result =
+MlyValue.strdecnode (fn _ => let val strdecs1 = strdecs1 ()
+ val strdecs2 = strdecs2 ()
+ in (Strdec.Local (strdecs1, strdecs2))
+end)
+ in ( LrTable.NT 117, ( result, LOCAL1left, END1right), rest671)
+end
+| ( 17, ( ( _, ( MlyValue.decnolocal decnolocal1, (decnolocalleft as
+decnolocal1left), (decnolocalright as decnolocal1right))) :: rest671))
+ => let val result = MlyValue.strdecnode (fn _ => let val (
+decnolocal as decnolocal1) = decnolocal1 ()
+ in (
+Strdec.Core (Dec.makeRegion' (decnolocal,
+ decnolocalleft, decnolocalright))
+)
+end)
+ in ( LrTable.NT 117, ( result, decnolocal1left, decnolocal1right),
+rest671)
+end
+| ( 18, ( ( _, ( MlyValue.strbinds' strbinds'1, _, strbinds'1right))
+ :: _ :: ( _, ( MlyValue.sigconst sigconst1, _, _)) :: ( _, (
+MlyValue.strid strid1, strid1left, _)) :: rest671)) => let val result
+ = MlyValue.strbinds (fn _ => let val (strid as strid1) = strid1 ()
+ val (sigconst as sigconst1) = sigconst1 ()
+ val (strbinds' as strbinds'1) = strbinds'1 ()
+ in (
+let val (def,strbinds) = strbinds'
+ in {name = strid, def = def, constraint = sigconst}
+ :: strbinds
+ end
+)
+end)
+ in ( LrTable.NT 111, ( result, strid1left, strbinds'1right), rest671)
+
+end
+| ( 19, ( ( _, ( MlyValue.strbinds'1 strbinds'11, _, strbinds'11right
+)) :: ( _, ( MlyValue.strexp1 strexp11, strexp11left, _)) :: rest671))
+ => let val result = MlyValue.strbinds' (fn _ => let val (strexp1
+ as strexp11) = strexp11 ()
+ val (strbinds'1 as strbinds'11) = strbinds'11 ()
+ in (augment1 (strexp1, strbinds'1))
+end)
+ in ( LrTable.NT 112, ( result, strexp11left, strbinds'11right),
+rest671)
+end
+| ( 20, ( ( _, ( MlyValue.strbinds'2 strbinds'21, _, strbinds'21right
+)) :: ( _, ( MlyValue.strexp2 strexp21, strexp21left, _)) :: rest671))
+ => let val result = MlyValue.strbinds' (fn _ => let val (strexp2
+ as strexp21) = strexp21 ()
+ val (strbinds'2 as strbinds'21) = strbinds'21 ()
+ in ((strexp2,strbinds'2))
+end)
+ in ( LrTable.NT 112, ( result, strexp21left, strbinds'21right),
+rest671)
+end
+| ( 21, ( ( _, ( MlyValue.strbinds'2 strbinds'21, (strbinds'2left as
+strbinds'21left), strbinds'21right)) :: rest671)) => let val result =
+ MlyValue.strbinds'1 (fn _ => let val (strbinds'2 as strbinds'21) =
+strbinds'21 ()
+ in (([], strbinds'2left, strbinds'2))
+end)
+ in ( LrTable.NT 113, ( result, strbinds'21left, strbinds'21right),
+rest671)
+end
+| ( 22, ( ( _, ( MlyValue.strbinds'1' strbinds'1'1, _,
+strbinds'1'1right)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) ::
+ ( _, ( _, WHERE1left, _)) :: rest671)) => let val result =
+MlyValue.strbinds'1 (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ val (strbinds'1' as strbinds'1'1) = strbinds'1'1 ()
+ in (cons1 (wherespec,strbinds'1'))
+end)
+ in ( LrTable.NT 113, ( result, WHERE1left, strbinds'1'1right),
+rest671)
+end
+| ( 23, ( ( _, ( MlyValue.strbinds'1 strbinds'11, strbinds'11left,
+strbinds'11right)) :: rest671)) => let val result =
+MlyValue.strbinds'1' (fn _ => let val (strbinds'1 as strbinds'11) =
+strbinds'11 ()
+ in (strbinds'1)
+end)
+ in ( LrTable.NT 114, ( result, strbinds'11left, strbinds'11right),
+rest671)
+end
+| ( 24, ( ( _, ( MlyValue.strbinds'1' strbinds'1'1, _,
+strbinds'1'1right)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) ::
+ ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.strbinds'1' (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ val (strbinds'1' as strbinds'1'1) = strbinds'1'1 ()
+ in (cons1 (wherespec,strbinds'1'))
+end)
+ in ( LrTable.NT 114, ( result, AND1left, strbinds'1'1right), rest671)
+
+end
+| ( 25, ( rest671)) => let val result = MlyValue.strbinds'2 (fn _ =>
+ ([]))
+ in ( LrTable.NT 115, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 26, ( ( _, ( MlyValue.strbinds strbinds1, _, strbinds1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.strbinds'2 (fn _ => let val (strbinds as strbinds1) =
+strbinds1 ()
+ in (strbinds)
+end)
+ in ( LrTable.NT 115, ( result, AND1left, strbinds1right), rest671)
+
+end
+| ( 27, ( ( _, ( MlyValue.strexpnode strexpnode1, (strexpnodeleft as
+strexpnode1left), (strexpnoderight as strexpnode1right))) :: rest671))
+ => let val result = MlyValue.strexp (fn _ => let val (strexpnode
+ as strexpnode1) = strexpnode1 ()
+ in (
+Strexp.makeRegion' (strexpnode,
+ strexpnodeleft, strexpnoderight)
+)
+end)
+ in ( LrTable.NT 123, ( result, strexpnode1left, strexpnode1right),
+rest671)
+end
+| ( 28, ( ( _, ( MlyValue.strexp1 strexp11, strexp11left,
+strexp11right)) :: rest671)) => let val result = MlyValue.strexpnode
+ (fn _ => let val (strexp1 as strexp11) = strexp11 ()
+ in (
+let
+ val (strexp, sigconst, sigexp) = strexp1
+ in
+ Strexp.Constrained (strexp, sigconst sigexp)
+ end
+)
+end)
+ in ( LrTable.NT 127, ( result, strexp11left, strexp11right), rest671)
+
+end
+| ( 29, ( ( _, ( MlyValue.wherespecs wherespecs1, _, (wherespecsright
+ as wherespecs1right))) :: ( _, ( MlyValue.strexp1 strexp11,
+strexp11left, _)) :: rest671)) => let val result =
+MlyValue.strexpnode (fn _ => let val (strexp1 as strexp11) = strexp11
+ ()
+ val (wherespecs as wherespecs1) = wherespecs1 ()
+ in (
+let
+ val (strexp,sigconst,sigexp) = strexp1
+ in
+ Strexp.Constrained
+ (strexp,
+ sigconst (Sigexp.wheree
+ (sigexp, wherespecs,
+ Region.extendRight (Sigexp.region sigexp,
+ wherespecsright))))
+ end
+)
+end)
+ in ( LrTable.NT 127, ( result, strexp11left, wherespecs1right),
+rest671)
+end
+| ( 30, ( ( _, ( MlyValue.strexp2node strexp2node1, strexp2node1left,
+ strexp2node1right)) :: rest671)) => let val result =
+MlyValue.strexpnode (fn _ => let val (strexp2node as strexp2node1) =
+strexp2node1 ()
+ in (strexp2node)
+end)
+ in ( LrTable.NT 127, ( result, strexp2node1left, strexp2node1right),
+rest671)
+end
+| ( 31, ( ( _, ( MlyValue.sigexp' sigexp'1, _, sigexp'1right)) :: _
+ :: ( _, ( MlyValue.strexp strexp1, strexp1left, _)) :: rest671)) =>
+ let val result = MlyValue.strexp1 (fn _ => let val (strexp as
+strexp1) = strexp1 ()
+ val (sigexp' as sigexp'1) = sigexp'1 ()
+ in ((strexp,SigConst.Transparent,sigexp'))
+end)
+ in ( LrTable.NT 124, ( result, strexp1left, sigexp'1right), rest671)
+
+end
+| ( 32, ( ( _, ( MlyValue.sigexp' sigexp'1, _, sigexp'1right)) :: _
+ :: ( _, ( MlyValue.strexp strexp1, strexp1left, _)) :: rest671)) =>
+ let val result = MlyValue.strexp1 (fn _ => let val (strexp as
+strexp1) = strexp1 ()
+ val (sigexp' as sigexp'1) = sigexp'1 ()
+ in ((strexp,SigConst.Opaque,sigexp'))
+end)
+ in ( LrTable.NT 124, ( result, strexp1left, sigexp'1right), rest671)
+
+end
+| ( 33, ( ( _, ( MlyValue.strexp2node strexp2node1, (strexp2nodeleft
+ as strexp2node1left), (strexp2noderight as strexp2node1right))) ::
+rest671)) => let val result = MlyValue.strexp2 (fn _ => let val (
+strexp2node as strexp2node1) = strexp2node1 ()
+ in (
+Strexp.makeRegion'
+ (strexp2node, strexp2nodeleft, strexp2noderight)
+)
+end)
+ in ( LrTable.NT 125, ( result, strexp2node1left, strexp2node1right),
+rest671)
+end
+| ( 34, ( ( _, ( MlyValue.longid longid1, longid1left, longid1right))
+ :: rest671)) => let val result = MlyValue.strexp2node (fn _ => let
+ val (longid as longid1) = longid1 ()
+ in (Strexp.Var (Longstrid.fromSymbols longid))
+end)
+ in ( LrTable.NT 126, ( result, longid1left, longid1right), rest671)
+
+end
+| ( 35, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.strdecs
+strdecs1, _, _)) :: ( _, ( _, STRUCT1left, _)) :: rest671)) => let
+ val result = MlyValue.strexp2node (fn _ => let val (strdecs as
+strdecs1) = strdecs1 ()
+ in (Strexp.Struct strdecs)
+end)
+ in ( LrTable.NT 126, ( result, STRUCT1left, END1right), rest671)
+end
+| ( 36, ( ( _, ( MlyValue.arg_fct arg_fct1, _, arg_fct1right)) :: ( _
+, ( MlyValue.longid longid1, longid1left, _)) :: rest671)) => let val
+ result = MlyValue.strexp2node (fn _ => let val (longid as longid1) =
+ longid1 ()
+ val (arg_fct as arg_fct1) = arg_fct1 ()
+ in (
+Strexp.App (Fctid.fromSymbol (ensureNonqualified longid), arg_fct))
+
+end)
+ in ( LrTable.NT 126, ( result, longid1left, arg_fct1right), rest671)
+
+end
+| ( 37, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.strexp strexp1,
+ _, _)) :: _ :: ( _, ( MlyValue.strdecs strdecs1, _, _)) :: ( _, ( _,
+LET1left, _)) :: rest671)) => let val result = MlyValue.strexp2node
+ (fn _ => let val (strdecs as strdecs1) = strdecs1 ()
+ val (strexp as strexp1) = strexp1 ()
+ in (Strexp.Let (strdecs,strexp))
+end)
+ in ( LrTable.NT 126, ( result, LET1left, END1right), rest671)
+end
+| ( 38, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.strexp
+strexp1, _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let val
+ result = MlyValue.arg_fct (fn _ => let val (strexp as strexp1) =
+strexp1 ()
+ in (strexp)
+end)
+ in ( LrTable.NT 8, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 39, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.strdecs
+strdecs1, strdecsleft, strdecsright)) :: ( _, ( _, LPAREN1left, _)) ::
+ rest671)) => let val result = MlyValue.arg_fct (fn _ => let val (
+strdecs as strdecs1) = strdecs1 ()
+ in (
+Strexp.makeRegion'
+ (Strexp.Struct strdecs,
+ strdecsleft, strdecsright)
+)
+end)
+ in ( LrTable.NT 8, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 40, ( ( _, ( MlyValue.sigexp' sigexp'1, sigexp'1left,
+sigexp'1right)) :: rest671)) => let val result = MlyValue.sigexp (fn
+ _ => let val (sigexp' as sigexp'1) = sigexp'1 ()
+ in (sigexp')
+end)
+ in ( LrTable.NT 102, ( result, sigexp'1left, sigexp'1right), rest671)
+
+end
+| ( 41, ( ( _, ( MlyValue.wherespecs wherespecs1, _, (wherespecsright
+ as wherespecs1right))) :: ( _, ( MlyValue.sigexp' sigexp'1, (
+sigexp'left as sigexp'1left), _)) :: rest671)) => let val result =
+MlyValue.sigexp (fn _ => let val (sigexp' as sigexp'1) = sigexp'1 ()
+ val (wherespecs as wherespecs1) = wherespecs1 ()
+ in (
+Sigexp.wheree (sigexp', wherespecs, reg (sigexp'left, wherespecsright))
+)
+end)
+ in ( LrTable.NT 102, ( result, sigexp'1left, wherespecs1right),
+rest671)
+end
+| ( 42, ( ( _, ( MlyValue.wherespecs' wherespecs'1, wherespecs'1left,
+ wherespecs'1right)) :: rest671)) => let val result =
+MlyValue.wherespecs (fn _ => let val (wherespecs' as wherespecs'1) =
+wherespecs'1 ()
+ in (Vector.fromList wherespecs')
+end)
+ in ( LrTable.NT 164, ( result, wherespecs'1left, wherespecs'1right),
+rest671)
+end
+| ( 43, ( ( _, ( MlyValue.wherespec wherespec1, _, wherespec1right))
+ :: ( _, ( _, WHERE1left, _)) :: rest671)) => let val result =
+MlyValue.wherespecs' (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ in ([wherespec])
+end)
+ in ( LrTable.NT 165, ( result, WHERE1left, wherespec1right), rest671)
+
+end
+| ( 44, ( ( _, ( MlyValue.wherespecs' wherespecs'1, _,
+wherespecs'1right)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) ::
+ ( _, ( _, WHERE1left, _)) :: rest671)) => let val result =
+MlyValue.wherespecs' (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ val (wherespecs' as wherespecs'1) = wherespecs'1 ()
+ in (wherespec :: wherespecs')
+end)
+ in ( LrTable.NT 165, ( result, WHERE1left, wherespecs'1right),
+rest671)
+end
+| ( 45, ( ( _, ( MlyValue.andspecs andspecs1, _, andspecs1right)) ::
+( _, ( MlyValue.wherespec wherespec1, _, _)) :: ( _, ( _, WHERE1left,
+ _)) :: rest671)) => let val result = MlyValue.wherespecs' (fn _ =>
+ let val (wherespec as wherespec1) = wherespec1 ()
+ val (andspecs as andspecs1) = andspecs1 ()
+ in (wherespec :: andspecs)
+end)
+ in ( LrTable.NT 165, ( result, WHERE1left, andspecs1right), rest671)
+
+end
+| ( 46, ( ( _, ( MlyValue.wherespec wherespec1, _, wherespec1right))
+ :: ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.andspecs (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ in ([wherespec])
+end)
+ in ( LrTable.NT 1, ( result, AND1left, wherespec1right), rest671)
+end
+| ( 47, ( ( _, ( MlyValue.andspecs andspecs1, _, andspecs1right)) ::
+( _, ( MlyValue.wherespec wherespec1, _, _)) :: ( _, ( _, AND1left, _)
+) :: rest671)) => let val result = MlyValue.andspecs (fn _ => let
+ val (wherespec as wherespec1) = wherespec1 ()
+ val (andspecs as andspecs1) = andspecs1 ()
+ in (wherespec :: andspecs)
+end)
+ in ( LrTable.NT 1, ( result, AND1left, andspecs1right), rest671)
+end
+| ( 48, ( ( _, ( MlyValue.wherespecs' wherespecs'1, _,
+wherespecs'1right)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) ::
+ ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.andspecs (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ val (wherespecs' as wherespecs'1) = wherespecs'1 ()
+ in (wherespec :: wherespecs')
+end)
+ in ( LrTable.NT 1, ( result, AND1left, wherespecs'1right), rest671)
+
+end
+| ( 49, ( ( _, ( MlyValue.sigbinds' sigbinds'1, _, sigbinds'1right))
+ :: ( _, ( MlyValue.sigexp' sigexp'1, _, _)) :: _ :: ( _, (
+MlyValue.sigid sigid1, sigid1left, _)) :: rest671)) => let val result
+ = MlyValue.sigbinds (fn _ => let val (sigid as sigid1) = sigid1 ()
+ val (sigexp' as sigexp'1) = sigexp'1 ()
+ val (sigbinds' as sigbinds'1) = sigbinds'1 ()
+ in (augment (sigid, sigexp', sigbinds'))
+end)
+ in ( LrTable.NT 98, ( result, sigid1left, sigbinds'1right), rest671)
+
+end
+| ( 50, ( ( _, ( MlyValue.sigexp'node sigexp'node1, (sigexp'nodeleft
+ as sigexp'node1left), (sigexp'noderight as sigexp'node1right))) ::
+rest671)) => let val result = MlyValue.sigexp' (fn _ => let val (
+sigexp'node as sigexp'node1) = sigexp'node1 ()
+ in (
+Sigexp.makeRegion' (sigexp'node,
+ sigexp'nodeleft,
+ sigexp'noderight)
+)
+end)
+ in ( LrTable.NT 103, ( result, sigexp'node1left, sigexp'node1right),
+rest671)
+end
+| ( 51, ( ( _, ( MlyValue.sigid sigid1, sigid1left, sigid1right)) ::
+rest671)) => let val result = MlyValue.sigexp'node (fn _ => let val
+ (sigid as sigid1) = sigid1 ()
+ in (Sigexp.Var sigid)
+end)
+ in ( LrTable.NT 104, ( result, sigid1left, sigid1right), rest671)
+end
+| ( 52, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.specs specs1, _
+, _)) :: ( _, ( _, SIG1left, _)) :: rest671)) => let val result =
+MlyValue.sigexp'node (fn _ => let val (specs as specs1) = specs1 ()
+ in (Sigexp.Spec specs)
+end)
+ in ( LrTable.NT 104, ( result, SIG1left, END1right), rest671)
+end
+| ( 53, ( rest671)) => let val result = MlyValue.sigbinds' (fn _ =>
+ (([], defaultPos, [])))
+ in ( LrTable.NT 99, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 54, ( ( _, ( MlyValue.sigbinds sigbinds1, _, sigbinds1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.sigbinds' (fn _ => let val (sigbinds as sigbinds1) =
+sigbinds1 ()
+ in (([], defaultPos, sigbinds))
+end)
+ in ( LrTable.NT 99, ( result, AND1left, sigbinds1right), rest671)
+end
+| ( 55, ( ( _, ( MlyValue.sigbinds'' sigbinds''1, _, sigbinds''1right
+)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) :: ( _, ( _,
+WHERE1left, _)) :: rest671)) => let val result = MlyValue.sigbinds'
+ (fn _ => let val (wherespec as wherespec1) = wherespec1 ()
+ val (sigbinds'' as sigbinds''1) = sigbinds''1 ()
+ in (cons1 (wherespec,sigbinds''))
+end)
+ in ( LrTable.NT 99, ( result, WHERE1left, sigbinds''1right), rest671)
+
+end
+| ( 56, ( ( _, ( MlyValue.sigbinds' sigbinds'1, sigbinds'1left,
+sigbinds'1right)) :: rest671)) => let val result =
+MlyValue.sigbinds'' (fn _ => let val (sigbinds' as sigbinds'1) =
+sigbinds'1 ()
+ in (sigbinds')
+end)
+ in ( LrTable.NT 100, ( result, sigbinds'1left, sigbinds'1right),
+rest671)
+end
+| ( 57, ( ( _, ( MlyValue.sigbinds'' sigbinds''1, _, sigbinds''1right
+)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) :: ( _, ( _,
+AND1left, _)) :: rest671)) => let val result = MlyValue.sigbinds''
+ (fn _ => let val (wherespec as wherespec1) = wherespec1 ()
+ val (sigbinds'' as sigbinds''1) = sigbinds''1 ()
+ in (cons1 (wherespec,sigbinds''))
+end)
+ in ( LrTable.NT 100, ( result, AND1left, sigbinds''1right), rest671)
+
+end
+| ( 58, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: _ :: ( _, (
+MlyValue.longtycon longtycon1, _, _)) :: ( _, ( MlyValue.tyvars
+tyvars1, _, _)) :: ( _, ( _, TYPE1left, _)) :: rest671)) => let val
+result = MlyValue.wherespec (fn _ => let val (tyvars as tyvars1) =
+tyvars1 ()
+ val (longtycon as longtycon1) = longtycon1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+{tyvars = tyvars,
+ longtycon = longtycon,
+ ty = ty}
+)
+end)
+ in ( LrTable.NT 163, ( result, TYPE1left, ty1right), rest671)
+end
+| ( 59, ( rest671)) => let val result = MlyValue.sigconst (fn _ => (
+SigConst.None))
+ in ( LrTable.NT 101, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 60, ( ( _, ( MlyValue.sigexp sigexp1, _, sigexp1right)) :: ( _, (
+ _, COLON1left, _)) :: rest671)) => let val result =
+MlyValue.sigconst (fn _ => let val (sigexp as sigexp1) = sigexp1 ()
+ in (SigConst.Transparent sigexp)
+end)
+ in ( LrTable.NT 101, ( result, COLON1left, sigexp1right), rest671)
+
+end
+| ( 61, ( ( _, ( MlyValue.sigexp sigexp1, _, sigexp1right)) :: ( _, (
+ _, COLONGT1left, _)) :: rest671)) => let val result =
+MlyValue.sigconst (fn _ => let val (sigexp as sigexp1) = sigexp1 ()
+ in (SigConst.Opaque sigexp)
+end)
+ in ( LrTable.NT 101, ( result, COLONGT1left, sigexp1right), rest671)
+
+end
+| ( 62, ( rest671)) => let val result = MlyValue.specs (fn _ => (
+Spec.makeRegion (Spec.Empty, Region.bogus)))
+ in ( LrTable.NT 110, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 63, ( ( _, ( MlyValue.specs specs1, _, specs1right)) :: ( _, ( _,
+ SEMICOLON1left, _)) :: rest671)) => let val result = MlyValue.specs
+ (fn _ => let val (specs as specs1) = specs1 ()
+ in (specs)
+end)
+ in ( LrTable.NT 110, ( result, SEMICOLON1left, specs1right), rest671)
+
+end
+| ( 64, ( ( _, ( MlyValue.specs specs1, _, specs1right)) :: ( _, (
+MlyValue.spec spec1, spec1left, _)) :: rest671)) => let val result =
+MlyValue.specs (fn _ => let val (spec as spec1) = spec1 ()
+ val (specs as specs1) = specs1 ()
+ in (Spec.seq (spec, specs))
+end)
+ in ( LrTable.NT 110, ( result, spec1left, specs1right), rest671)
+end
+| ( 65, ( ( _, ( MlyValue.specnode specnode1, (specnodeleft as
+specnode1left), (specnoderight as specnode1right))) :: rest671)) =>
+ let val result = MlyValue.spec (fn _ => let val (specnode as
+specnode1) = specnode1 ()
+ in (Spec.makeRegion' (specnode, specnodeleft, specnoderight))
+end)
+ in ( LrTable.NT 108, ( result, specnode1left, specnode1right),
+rest671)
+end
+| ( 66, ( ( _, ( MlyValue.valdescs valdescs1, _, valdescs1right)) ::
+( _, ( _, VAL1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (valdescs as valdescs1) =
+valdescs1 ()
+ in (Spec.Val (Vector.fromList valdescs))
+end)
+ in ( LrTable.NT 109, ( result, VAL1left, valdescs1right), rest671)
+
+end
+| ( 67, ( ( _, ( MlyValue.typdescs typdescs1, _, typdescs1right)) ::
+( _, ( _, TYPE1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (typdescs as typdescs1) =
+typdescs1 ()
+ in (Spec.Type (Vector.fromList typdescs))
+end)
+ in ( LrTable.NT 109, ( result, TYPE1left, typdescs1right), rest671)
+
+end
+| ( 68, ( ( _, ( MlyValue.typBind typBind1, _, typBind1right)) :: ( _
+, ( _, TYPE1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (typBind as typBind1) = typBind1
+ ()
+ in (Spec.TypeDefs typBind)
+end)
+ in ( LrTable.NT 109, ( result, TYPE1left, typBind1right), rest671)
+
+end
+| ( 69, ( ( _, ( MlyValue.typdescs typdescs1, _, typdescs1right)) ::
+( _, ( _, EQTYPE1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (typdescs as typdescs1) =
+typdescs1 ()
+ in (Spec.Eqtype (Vector.fromList typdescs))
+end)
+ in ( LrTable.NT 109, ( result, EQTYPE1left, typdescs1right), rest671)
+
+end
+| ( 70, ( ( _, ( MlyValue.datatypeRhsNoWithtype
+datatypeRhsNoWithtype1, _, datatypeRhsNoWithtype1right)) :: ( _, ( _,
+DATATYPE1left, _)) :: rest671)) => let val result = MlyValue.specnode
+ (fn _ => let val (datatypeRhsNoWithtype as datatypeRhsNoWithtype1) =
+ datatypeRhsNoWithtype1 ()
+ in (Spec.Datatype datatypeRhsNoWithtype)
+end)
+ in ( LrTable.NT 109, ( result, DATATYPE1left,
+datatypeRhsNoWithtype1right), rest671)
+end
+| ( 71, ( ( _, ( MlyValue.exndescs exndescs1, _, exndescs1right)) ::
+( _, ( _, EXCEPTION1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (exndescs as exndescs1) =
+exndescs1 ()
+ in (Spec.Exception (Vector.fromList exndescs))
+end)
+ in ( LrTable.NT 109, ( result, EXCEPTION1left, exndescs1right),
+rest671)
+end
+| ( 72, ( ( _, ( MlyValue.strdescs strdescs1, _, strdescs1right)) ::
+( _, ( _, STRUCTURE1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (strdescs as strdescs1) =
+strdescs1 ()
+ in (Spec.Structure (Vector.fromList strdescs))
+end)
+ in ( LrTable.NT 109, ( result, STRUCTURE1left, strdescs1right),
+rest671)
+end
+| ( 73, ( ( _, ( MlyValue.sigexp sigexp1, _, sigexp1right)) :: ( _, (
+ _, INCLUDE1left, _)) :: rest671)) => let val result =
+MlyValue.specnode (fn _ => let val (sigexp as sigexp1) = sigexp1 ()
+ in (Spec.IncludeSigexp sigexp)
+end)
+ in ( LrTable.NT 109, ( result, INCLUDE1left, sigexp1right), rest671)
+
+end
+| ( 74, ( ( _, ( MlyValue.sigids sigids1, _, sigids1right)) :: ( _, (
+ MlyValue.sigid sigid1, _, _)) :: ( _, ( _, INCLUDE1left, _)) ::
+rest671)) => let val result = MlyValue.specnode (fn _ => let val (
+sigid as sigid1) = sigid1 ()
+ val (sigids as sigids1) = sigids1 ()
+ in (Spec.IncludeSigids (Vector.fromList (sigid :: sigids)) )
+end)
+ in ( LrTable.NT 109, ( result, INCLUDE1left, sigids1right), rest671)
+
+end
+| ( 75, ( ( _, ( MlyValue.sharespec sharespec1, (sharespecleft as
+sharespec1left), (sharespecright as sharespec1right))) :: rest671)) =>
+ let val result = MlyValue.specnode (fn _ => let val (sharespec as
+sharespec1) = sharespec1 ()
+ in (
+Spec.Sharing {spec = Spec.makeRegion' (Spec.Empty,
+ sharespecleft,
+ sharespecright),
+ equations = (Vector.new1
+ (Equation.makeRegion' (sharespec,
+ sharespecleft,
+ sharespecright)))}
+)
+end)
+ in ( LrTable.NT 109, ( result, sharespec1left, sharespec1right),
+rest671)
+end
+| ( 76, ( ( _, ( MlyValue.longtyconeqns longtyconeqns1, _,
+longtyconeqns1right)) :: _ :: ( _, ( _, SHARING1left, _)) :: rest671))
+ => let val result = MlyValue.sharespec (fn _ => let val (
+longtyconeqns as longtyconeqns1) = longtyconeqns1 ()
+ in (Equation.Type longtyconeqns)
+end)
+ in ( LrTable.NT 97, ( result, SHARING1left, longtyconeqns1right),
+rest671)
+end
+| ( 77, ( ( _, ( MlyValue.longstrideqns longstrideqns1, _,
+longstrideqns1right)) :: ( _, ( _, SHARING1left, _)) :: rest671)) =>
+ let val result = MlyValue.sharespec (fn _ => let val (longstrideqns
+ as longstrideqns1) = longstrideqns1 ()
+ in (Equation.Structure longstrideqns)
+end)
+ in ( LrTable.NT 97, ( result, SHARING1left, longstrideqns1right),
+rest671)
+end
+| ( 78, ( ( _, ( MlyValue.longstrid longstrid2, _, longstrid2right))
+ :: _ :: ( _, ( MlyValue.longstrid longstrid1, longstrid1left, _)) ::
+rest671)) => let val result = MlyValue.longstrideqns (fn _ => let
+ val longstrid1 = longstrid1 ()
+ val longstrid2 = longstrid2 ()
+ in ([longstrid1,longstrid2])
+end)
+ in ( LrTable.NT 69, ( result, longstrid1left, longstrid2right),
+rest671)
+end
+| ( 79, ( ( _, ( MlyValue.longstrideqns longstrideqns1, _,
+longstrideqns1right)) :: _ :: ( _, ( MlyValue.longstrid longstrid1,
+longstrid1left, _)) :: rest671)) => let val result =
+MlyValue.longstrideqns (fn _ => let val (longstrid as longstrid1) =
+longstrid1 ()
+ val (longstrideqns as longstrideqns1) = longstrideqns1 ()
+ in (longstrid :: longstrideqns)
+end)
+ in ( LrTable.NT 69, ( result, longstrid1left, longstrideqns1right),
+rest671)
+end
+| ( 80, ( ( _, ( MlyValue.longtycon longtycon2, _, longtycon2right))
+ :: _ :: ( _, ( MlyValue.longtycon longtycon1, longtycon1left, _)) ::
+rest671)) => let val result = MlyValue.longtyconeqns (fn _ => let
+ val longtycon1 = longtycon1 ()
+ val longtycon2 = longtycon2 ()
+ in ([longtycon1,longtycon2])
+end)
+ in ( LrTable.NT 72, ( result, longtycon1left, longtycon2right),
+rest671)
+end
+| ( 81, ( ( _, ( MlyValue.longtyconeqns longtyconeqns1, _,
+longtyconeqns1right)) :: _ :: ( _, ( MlyValue.longtycon longtycon1,
+longtycon1left, _)) :: rest671)) => let val result =
+MlyValue.longtyconeqns (fn _ => let val (longtycon as longtycon1) =
+longtycon1 ()
+ val (longtyconeqns as longtyconeqns1) = longtyconeqns1 ()
+ in (longtycon :: longtyconeqns)
+end)
+ in ( LrTable.NT 72, ( result, longtycon1left, longtyconeqns1right),
+rest671)
+end
+| ( 82, ( ( _, ( MlyValue.strdescs' strdescs'1, _, strdescs'1right))
+ :: ( _, ( MlyValue.sigexp' sigexp'1, _, _)) :: _ :: ( _, (
+MlyValue.strid strid1, strid1left, _)) :: rest671)) => let val result
+ = MlyValue.strdescs (fn _ => let val (strid as strid1) = strid1 ()
+ val (sigexp' as sigexp'1) = sigexp'1 ()
+ val (strdescs' as strdescs'1) = strdescs'1 ()
+ in (augment (strid, sigexp', strdescs'))
+end)
+ in ( LrTable.NT 120, ( result, strid1left, strdescs'1right), rest671)
+
+end
+| ( 83, ( rest671)) => let val result = MlyValue.strdescs' (fn _ =>
+ (([], defaultPos, [])))
+ in ( LrTable.NT 121, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 84, ( ( _, ( MlyValue.strdescs strdescs1, _, strdescs1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.strdescs' (fn _ => let val (strdescs as strdescs1) =
+strdescs1 ()
+ in (([], defaultPos, strdescs))
+end)
+ in ( LrTable.NT 121, ( result, AND1left, strdescs1right), rest671)
+
+end
+| ( 85, ( ( _, ( MlyValue.strdescs'' strdescs''1, _, strdescs''1right
+)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) :: ( _, ( _,
+WHERE1left, _)) :: rest671)) => let val result = MlyValue.strdescs'
+ (fn _ => let val (wherespec as wherespec1) = wherespec1 ()
+ val (strdescs'' as strdescs''1) = strdescs''1 ()
+ in (cons1 (wherespec, strdescs''))
+end)
+ in ( LrTable.NT 121, ( result, WHERE1left, strdescs''1right), rest671
+)
+end
+| ( 86, ( ( _, ( MlyValue.strdescs' strdescs'1, strdescs'1left,
+strdescs'1right)) :: rest671)) => let val result =
+MlyValue.strdescs'' (fn _ => let val (strdescs' as strdescs'1) =
+strdescs'1 ()
+ in (strdescs')
+end)
+ in ( LrTable.NT 122, ( result, strdescs'1left, strdescs'1right),
+rest671)
+end
+| ( 87, ( ( _, ( MlyValue.strdescs'' strdescs''1, _, strdescs''1right
+)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) :: ( _, ( _,
+AND1left, _)) :: rest671)) => let val result = MlyValue.strdescs''
+ (fn _ => let val (wherespec as wherespec1) = wherespec1 ()
+ val (strdescs'' as strdescs''1) = strdescs''1 ()
+ in (cons1 (wherespec, strdescs''))
+end)
+ in ( LrTable.NT 122, ( result, AND1left, strdescs''1right), rest671)
+
+end
+| ( 88, ( ( _, ( MlyValue.typdesc typdesc1, typdesc1left,
+typdesc1right)) :: rest671)) => let val result = MlyValue.typdescs
+ (fn _ => let val (typdesc as typdesc1) = typdesc1 ()
+ in ([typdesc])
+end)
+ in ( LrTable.NT 149, ( result, typdesc1left, typdesc1right), rest671)
+
+end
+| ( 89, ( ( _, ( MlyValue.typdescs typdescs1, _, typdescs1right)) ::
+ _ :: ( _, ( MlyValue.typdesc typdesc1, typdesc1left, _)) :: rest671))
+ => let val result = MlyValue.typdescs (fn _ => let val (typdesc as
+typdesc1) = typdesc1 ()
+ val (typdescs as typdescs1) = typdescs1 ()
+ in (typdesc :: typdescs)
+end)
+ in ( LrTable.NT 149, ( result, typdesc1left, typdescs1right), rest671
+)
+end
+| ( 90, ( ( _, ( MlyValue.tycon tycon1, _, tycon1right)) :: ( _, (
+MlyValue.tyvars tyvars1, tyvars1left, _)) :: rest671)) => let val
+result = MlyValue.typdesc (fn _ => let val (tyvars as tyvars1) =
+tyvars1 ()
+ val (tycon as tycon1) = tycon1 ()
+ in ({tyvars = tyvars,
+ tycon = tycon})
+end)
+ in ( LrTable.NT 148, ( result, tyvars1left, tycon1right), rest671)
+
+end
+| ( 91, ( ( _, ( MlyValue.valdesc valdesc1, valdesc1left,
+valdesc1right)) :: rest671)) => let val result = MlyValue.valdescs
+ (fn _ => let val (valdesc as valdesc1) = valdesc1 ()
+ in ([valdesc])
+end)
+ in ( LrTable.NT 158, ( result, valdesc1left, valdesc1right), rest671)
+
+end
+| ( 92, ( ( _, ( MlyValue.valdescs valdescs1, _, valdescs1right)) ::
+ _ :: ( _, ( MlyValue.valdesc valdesc1, valdesc1left, _)) :: rest671))
+ => let val result = MlyValue.valdescs (fn _ => let val (valdesc as
+valdesc1) = valdesc1 ()
+ val (valdescs as valdescs1) = valdescs1 ()
+ in (valdesc :: valdescs)
+end)
+ in ( LrTable.NT 158, ( result, valdesc1left, valdescs1right), rest671
+)
+end
+| ( 93, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: _ :: ( _, (
+MlyValue.var var1, var1left, _)) :: rest671)) => let val result =
+MlyValue.valdesc (fn _ => let val (var as var1) = var1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Con.ensureSpecify (Vid.toCon (Vid.fromVar var))
+ ; (var, ty)
+)
+end)
+ in ( LrTable.NT 157, ( result, var1left, ty1right), rest671)
+end
+| ( 94, ( ( _, ( MlyValue.exndesc exndesc1, exndesc1left,
+exndesc1right)) :: rest671)) => let val result = MlyValue.exndescs
+ (fn _ => let val (exndesc as exndesc1) = exndesc1 ()
+ in ([exndesc])
+end)
+ in ( LrTable.NT 43, ( result, exndesc1left, exndesc1right), rest671)
+
+end
+| ( 95, ( ( _, ( MlyValue.exndescs exndescs1, _, exndescs1right)) ::
+ _ :: ( _, ( MlyValue.exndesc exndesc1, exndesc1left, _)) :: rest671))
+ => let val result = MlyValue.exndescs (fn _ => let val (exndesc as
+exndesc1) = exndesc1 ()
+ val (exndescs as exndescs1) = exndescs1 ()
+ in (exndesc :: exndescs)
+end)
+ in ( LrTable.NT 43, ( result, exndesc1left, exndescs1right), rest671)
+
+end
+| ( 96, ( ( _, ( MlyValue.tyOpt tyOpt1, _, tyOpt1right)) :: ( _, (
+MlyValue.con con1, con1left, _)) :: rest671)) => let val result =
+MlyValue.exndesc (fn _ => let val (con as con1) = con1 ()
+ val (tyOpt as tyOpt1) = tyOpt1 ()
+ in (Con.ensureSpecify con; (con, tyOpt))
+end)
+ in ( LrTable.NT 42, ( result, con1left, tyOpt1right), rest671)
+end
+| ( 97, ( rest671)) => let val result = MlyValue.tyOpt (fn _ => (
+NONE))
+ in ( LrTable.NT 142, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 98, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: ( _, ( _, OF1left,
+ _)) :: rest671)) => let val result = MlyValue.tyOpt (fn _ => let
+ val (ty as ty1) = ty1 ()
+ in (SOME ty)
+end)
+ in ( LrTable.NT 142, ( result, OF1left, ty1right), rest671)
+end
+| ( 99, ( ( _, ( MlyValue.funbinds' funbinds'1, _, funbinds'1right))
+ :: _ :: ( _, ( MlyValue.sigconst sigconst1, _, _)) :: _ :: ( _, (
+MlyValue.fctarg fctarg1, fctargleft, fctargright)) :: _ :: ( _, (
+MlyValue.fctid fctid1, fctid1left, _)) :: rest671)) => let val result
+ = MlyValue.funbinds (fn _ => let val (fctid as fctid1) = fctid1 ()
+ val (fctarg as fctarg1) = fctarg1 ()
+ val (sigconst as sigconst1) = sigconst1 ()
+ val (funbinds' as funbinds'1) = funbinds'1 ()
+ in (
+let val (strexp,funbinds) = funbinds'
+ in {name = fctid,
+ arg = FctArg.makeRegion' (fctarg, fctargleft, fctargright),
+ result = sigconst,
+ body = strexp}
+ :: funbinds
+ end
+)
+end)
+ in ( LrTable.NT 54, ( result, fctid1left, funbinds'1right), rest671)
+
+end
+| ( 100, ( ( _, ( MlyValue.funbinds'1 funbinds'11, _,
+funbinds'11right)) :: ( _, ( MlyValue.strexp1 strexp11, strexp11left,
+ _)) :: rest671)) => let val result = MlyValue.funbinds' (fn _ => let
+ val (strexp1 as strexp11) = strexp11 ()
+ val (funbinds'1 as funbinds'11) = funbinds'11 ()
+ in (augment1 (strexp1, funbinds'1))
+end)
+ in ( LrTable.NT 55, ( result, strexp11left, funbinds'11right),
+rest671)
+end
+| ( 101, ( ( _, ( MlyValue.funbinds'2 funbinds'21, _,
+funbinds'21right)) :: ( _, ( MlyValue.strexp2 strexp21, strexp21left,
+ _)) :: rest671)) => let val result = MlyValue.funbinds' (fn _ => let
+ val (strexp2 as strexp21) = strexp21 ()
+ val (funbinds'2 as funbinds'21) = funbinds'21 ()
+ in ((strexp2, funbinds'2))
+end)
+ in ( LrTable.NT 55, ( result, strexp21left, funbinds'21right),
+rest671)
+end
+| ( 102, ( ( _, ( MlyValue.funbinds'2 funbinds'21, (funbinds'2left
+ as funbinds'21left), funbinds'21right)) :: rest671)) => let val
+result = MlyValue.funbinds'1 (fn _ => let val (funbinds'2 as
+funbinds'21) = funbinds'21 ()
+ in ([], funbinds'2left, funbinds'2)
+end)
+ in ( LrTable.NT 56, ( result, funbinds'21left, funbinds'21right),
+rest671)
+end
+| ( 103, ( ( _, ( MlyValue.funbinds'1' funbinds'1'1, _,
+funbinds'1'1right)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) ::
+ ( _, ( _, WHERE1left, _)) :: rest671)) => let val result =
+MlyValue.funbinds'1 (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ val (funbinds'1' as funbinds'1'1) = funbinds'1'1 ()
+ in (cons1 (wherespec,funbinds'1'))
+end)
+ in ( LrTable.NT 56, ( result, WHERE1left, funbinds'1'1right), rest671
+)
+end
+| ( 104, ( rest671)) => let val result = MlyValue.funbinds'2 (fn _
+ => ([]))
+ in ( LrTable.NT 58, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 105, ( ( _, ( MlyValue.funbinds funbinds1, _, funbinds1right)) ::
+ ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.funbinds'2 (fn _ => let val (funbinds as funbinds1) =
+funbinds1 ()
+ in (funbinds)
+end)
+ in ( LrTable.NT 58, ( result, AND1left, funbinds1right), rest671)
+end
+| ( 106, ( ( _, ( MlyValue.funbinds'1 funbinds'11, funbinds'11left,
+funbinds'11right)) :: rest671)) => let val result =
+MlyValue.funbinds'1' (fn _ => let val (funbinds'1 as funbinds'11) =
+funbinds'11 ()
+ in (funbinds'1)
+end)
+ in ( LrTable.NT 57, ( result, funbinds'11left, funbinds'11right),
+rest671)
+end
+| ( 107, ( ( _, ( MlyValue.funbinds'1' funbinds'1'1, _,
+funbinds'1'1right)) :: ( _, ( MlyValue.wherespec wherespec1, _, _)) ::
+ ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.funbinds'1' (fn _ => let val (wherespec as wherespec1) =
+wherespec1 ()
+ val (funbinds'1' as funbinds'1'1) = funbinds'1'1 ()
+ in (cons1 (wherespec,funbinds'1'))
+end)
+ in ( LrTable.NT 57, ( result, AND1left, funbinds'1'1right), rest671)
+
+end
+| ( 108, ( ( _, ( MlyValue.sigexp sigexp1, _, sigexp1right)) :: _ ::
+( _, ( MlyValue.strid strid1, strid1left, _)) :: rest671)) => let val
+ result = MlyValue.fctarg (fn _ => let val (strid as strid1) = strid1
+ ()
+ val (sigexp as sigexp1) = sigexp1 ()
+ in (FctArg.Structure (strid, sigexp))
+end)
+ in ( LrTable.NT 50, ( result, strid1left, sigexp1right), rest671)
+end
+| ( 109, ( ( _, ( MlyValue.specs specs1, specs1left, specs1right)) ::
+ rest671)) => let val result = MlyValue.fctarg (fn _ => let val (
+specs as specs1) = specs1 ()
+ in (FctArg.Spec specs)
+end)
+ in ( LrTable.NT 50, ( result, specs1left, specs1right), rest671)
+end
+| ( 110, ( rest671)) => let val result = MlyValue.decs (fn _ => (
+Dec.makeRegion' (Dec.SeqDec (Vector.new0 ()),
+ defaultPos, defaultPos)
+))
+ in ( LrTable.NT 33, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 111, ( ( _, ( MlyValue.decs decs1, _, decs1right)) :: ( _, (
+MlyValue.dec dec1, dec1left, _)) :: rest671)) => let val result =
+MlyValue.decs (fn _ => let val (dec as dec1) = dec1 ()
+ val (decs as decs1) = decs1 ()
+ in (Dec.sequence (dec,decs))
+end)
+ in ( LrTable.NT 33, ( result, dec1left, decs1right), rest671)
+end
+| ( 112, ( ( _, ( MlyValue.decs decs1, _, decs1right)) :: ( _, ( _,
+SEMICOLON1left, _)) :: rest671)) => let val result = MlyValue.decs
+ (fn _ => let val (decs as decs1) = decs1 ()
+ in (decs)
+end)
+ in ( LrTable.NT 33, ( result, SEMICOLON1left, decs1right), rest671)
+
+end
+| ( 113, ( ( _, ( MlyValue.decnode decnode1, (decnodeleft as
+decnode1left), (decnoderight as decnode1right))) :: rest671)) => let
+ val result = MlyValue.dec (fn _ => let val (decnode as decnode1) =
+decnode1 ()
+ in (Dec.makeRegion' (decnode, decnodeleft, decnoderight))
+end)
+ in ( LrTable.NT 30, ( result, decnode1left, decnode1right), rest671)
+
+end
+| ( 114, ( ( _, ( MlyValue.decnolocal decnolocal1, decnolocal1left,
+decnolocal1right)) :: rest671)) => let val result = MlyValue.decnode
+ (fn _ => let val (decnolocal as decnolocal1) = decnolocal1 ()
+ in (decnolocal)
+end)
+ in ( LrTable.NT 31, ( result, decnolocal1left, decnolocal1right),
+rest671)
+end
+| ( 115, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.decs decs2, _,
+ _)) :: _ :: ( _, ( MlyValue.decs decs1, _, _)) :: ( _, ( _,
+LOCAL1left, _)) :: rest671)) => let val result = MlyValue.decnode (fn
+ _ => let val decs1 = decs1 ()
+ val decs2 = decs2 ()
+ in (Dec.Local (decs1,decs2))
+end)
+ in ( LrTable.NT 31, ( result, LOCAL1left, END1right), rest671)
+end
+| ( 116, ( ( _, ( MlyValue.valbindTop valbindTop1, _,
+valbindTop1right)) :: ( _, ( _, VAL1left, _)) :: rest671)) => let val
+ result = MlyValue.decnolocal (fn _ => let val (valbindTop as
+valbindTop1) = valbindTop1 ()
+ in (
+Dec.Val {tyvars = Vector.new0 (),
+ vbs = #1 valbindTop,
+ rvbs = #2 valbindTop}
+)
+end)
+ in ( LrTable.NT 32, ( result, VAL1left, valbindTop1right), rest671)
+
+end
+| ( 117, ( ( _, ( MlyValue.valbindTop valbindTop1, _,
+valbindTop1right)) :: ( _, ( MlyValue.tyvarseq tyvarseq1, _, _)) :: (
+ _, ( _, VAL1left, _)) :: rest671)) => let val result =
+MlyValue.decnolocal (fn _ => let val (tyvarseq as tyvarseq1) =
+tyvarseq1 ()
+ val (valbindTop as valbindTop1) = valbindTop1 ()
+ in (
+Dec.Val {tyvars = tyvarseq,
+ vbs = #1 valbindTop,
+ rvbs = #2 valbindTop}
+)
+end)
+ in ( LrTable.NT 32, ( result, VAL1left, valbindTop1right), rest671)
+
+end
+| ( 118, ( ( _, ( MlyValue.funs funs1, _, funs1right)) :: ( _, ( _,
+FUN1left, _)) :: rest671)) => let val result = MlyValue.decnolocal
+ (fn _ => let val (funs as funs1) = funs1 ()
+ in (Dec.Fun (Vector.new0 (), Vector.fromList funs))
+end)
+ in ( LrTable.NT 32, ( result, FUN1left, funs1right), rest671)
+end
+| ( 119, ( ( _, ( MlyValue.funs funs1, _, funs1right)) :: ( _, (
+MlyValue.tyvarseq tyvarseq1, _, _)) :: ( _, ( _, FUN1left, _)) ::
+rest671)) => let val result = MlyValue.decnolocal (fn _ => let val (
+tyvarseq as tyvarseq1) = tyvarseq1 ()
+ val (funs as funs1) = funs1 ()
+ in (Dec.Fun (tyvarseq, Vector.fromList funs))
+end)
+ in ( LrTable.NT 32, ( result, FUN1left, funs1right), rest671)
+end
+| ( 120, ( ( _, ( MlyValue.typBind typBind1, _, typBind1right)) :: (
+ _, ( _, TYPE1left, _)) :: rest671)) => let val result =
+MlyValue.decnolocal (fn _ => let val (typBind as typBind1) = typBind1
+ ()
+ in (Dec.Type typBind)
+end)
+ in ( LrTable.NT 32, ( result, TYPE1left, typBind1right), rest671)
+end
+| ( 121, ( ( _, ( MlyValue.datatypeRhs datatypeRhs1, _,
+datatypeRhs1right)) :: ( _, ( _, DATATYPE1left, _)) :: rest671)) =>
+ let val result = MlyValue.decnolocal (fn _ => let val (datatypeRhs
+ as datatypeRhs1) = datatypeRhs1 ()
+ in (Dec.Datatype datatypeRhs)
+end)
+ in ( LrTable.NT 32, ( result, DATATYPE1left, datatypeRhs1right),
+rest671)
+end
+| ( 122, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.decs decs1, _,
+ _)) :: _ :: ( _, ( MlyValue.datBind datBind1, _, _)) :: ( _, ( _,
+ABSTYPE1left, _)) :: rest671)) => let val result =
+MlyValue.decnolocal (fn _ => let val (datBind as datBind1) = datBind1
+ ()
+ val (decs as decs1) = decs1 ()
+ in (
+Dec.Abstype {datBind = datBind,
+ body = decs}
+)
+end)
+ in ( LrTable.NT 32, ( result, ABSTYPE1left, END1right), rest671)
+end
+| ( 123, ( ( _, ( MlyValue.ebs ebs1, _, ebs1right)) :: ( _, ( _,
+EXCEPTION1left, _)) :: rest671)) => let val result =
+MlyValue.decnolocal (fn _ => let val (ebs as ebs1) = ebs1 ()
+ in (Dec.Exception (Vector.fromList ebs))
+end)
+ in ( LrTable.NT 32, ( result, EXCEPTION1left, ebs1right), rest671)
+
+end
+| ( 124, ( ( _, ( MlyValue.longstrids longstrids1, _,
+longstrids1right)) :: ( _, ( _, OPEN1left, _)) :: rest671)) => let
+ val result = MlyValue.decnolocal (fn _ => let val (longstrids as
+longstrids1) = longstrids1 ()
+ in (Dec.Open (Vector.fromList longstrids))
+end)
+ in ( LrTable.NT 32, ( result, OPEN1left, longstrids1right), rest671)
+
+end
+| ( 125, ( ( _, ( MlyValue.vids vids1, _, vids1right)) :: ( _, (
+MlyValue.fixity fixity1, fixity1left, _)) :: rest671)) => let val
+result = MlyValue.decnolocal (fn _ => let val (fixity as fixity1) =
+fixity1 ()
+ val (vids as vids1) = vids1 ()
+ in (
+Dec.Fix {fixity = fixity,
+ ops = Vector.fromList vids}
+)
+end)
+ in ( LrTable.NT 32, ( result, fixity1left, vids1right), rest671)
+end
+| ( 126, ( ( _, ( MlyValue.longvarands longvarands1, _,
+longvarands1right)) :: _ :: ( _, ( MlyValue.ty ty1, _, _)) :: _ :: ( _
+, ( MlyValue.var var1, _, _)) :: ( _, ( MlyValue.priority priority1, _
+, _)) :: ( _, ( _, OVERLOAD1left, _)) :: rest671)) => let val result
+ = MlyValue.decnolocal (fn _ => let val (priority as priority1) =
+priority1 ()
+ val (var as var1) = var1 ()
+ val (ty as ty1) = ty1 ()
+ val (longvarands as longvarands1) = longvarands1 ()
+ in (
+Dec.Overload (priority,
+ var,
+ Vector.new0 (),
+ ty,
+ Vector.fromList longvarands)
+)
+end)
+ in ( LrTable.NT 32, ( result, OVERLOAD1left, longvarands1right),
+rest671)
+end
+| ( 127, ( ( _, ( MlyValue.valbind valbind1, valbind1left,
+valbind1right)) :: rest671)) => let val result = MlyValue.valbindTop
+ (fn _ => let val (valbind as valbind1) = valbind1 ()
+ in (
+let
+ val (vbs, rvbs) = valbind
+ in
+ (Vector.fromList vbs,
+ Vector.fromList rvbs)
+ end
+)
+end)
+ in ( LrTable.NT 156, ( result, valbind1left, valbind1right), rest671)
+
+end
+| ( 128, ( ( _, ( MlyValue.valbindRest valbindRest1, _,
+valbindRest1right)) :: ( _, ( MlyValue.exp exp1, _, _)) :: _ :: ( _, (
+ MlyValue.pat pat1, pat1left, _)) :: rest671)) => let val result =
+MlyValue.valbind (fn _ => let val (pat as pat1) = pat1 ()
+ val (exp as exp1) = exp1 ()
+ val (valbindRest as valbindRest1) = valbindRest1 ()
+ in (
+let
+ val (vbs, rvbs) = valbindRest
+ in
+ ({pat = pat, exp = exp} :: vbs,
+ rvbs)
+ end
+)
+end)
+ in ( LrTable.NT 154, ( result, pat1left, valbindRest1right), rest671)
+
+end
+| ( 129, ( ( _, ( MlyValue.rvalbind rvalbind1, _, rvalbind1right)) ::
+ ( _, ( _, REC1left, _)) :: rest671)) => let val result =
+MlyValue.valbind (fn _ => let val (rvalbind as rvalbind1) = rvalbind1
+ ()
+ in (([], rvalbind))
+end)
+ in ( LrTable.NT 154, ( result, REC1left, rvalbind1right), rest671)
+
+end
+| ( 130, ( rest671)) => let val result = MlyValue.valbindRest (fn _
+ => (([], [])))
+ in ( LrTable.NT 155, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 131, ( ( _, ( MlyValue.valbind valbind1, _, valbind1right)) :: (
+ _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.valbindRest (fn _ => let val (valbind as valbind1) =
+valbind1 ()
+ in (valbind)
+end)
+ in ( LrTable.NT 155, ( result, AND1left, valbind1right), rest671)
+end
+| ( 132, ( ( _, ( MlyValue.rvalbind rvalbind1, _, rvalbind1right)) ::
+ ( _, ( _, REC1left, _)) :: rest671)) => let val result =
+MlyValue.rvalbind (fn _ => let val (rvalbind as rvalbind1) =
+rvalbind1 ()
+ in (rvalbind)
+end)
+ in ( LrTable.NT 92, ( result, REC1left, rvalbind1right), rest671)
+end
+| ( 133, ( ( _, ( MlyValue.rvalbindRest rvalbindRest1, _,
+rvalbindRest1right)) :: ( _, ( MlyValue.match match1, _, _)) :: _ :: _
+ :: ( _, ( MlyValue.pat pat1, pat1left, _)) :: rest671)) => let val
+result = MlyValue.rvalbind (fn _ => let val (pat as pat1) = pat1 ()
+ val (match as match1) = match1 ()
+ val (rvalbindRest as rvalbindRest1) = rvalbindRest1 ()
+ in ({pat = pat, match = match} :: rvalbindRest)
+end)
+ in ( LrTable.NT 92, ( result, pat1left, rvalbindRest1right), rest671)
+
+end
+| ( 134, ( rest671)) => let val result = MlyValue.rvalbindRest (fn _
+ => ([]))
+ in ( LrTable.NT 93, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 135, ( ( _, ( MlyValue.rvalbind rvalbind1, _, rvalbind1right)) ::
+ ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.rvalbindRest (fn _ => let val (rvalbind as rvalbind1) =
+rvalbind1 ()
+ in (rvalbind)
+end)
+ in ( LrTable.NT 93, ( result, AND1left, rvalbind1right), rest671)
+end
+| ( 136, ( rest671)) => let val result = MlyValue.constraint (fn _
+ => (NONE))
+ in ( LrTable.NT 18, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 137, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: ( _, ( _,
+COLON1left, _)) :: rest671)) => let val result = MlyValue.constraint
+ (fn _ => let val (ty as ty1) = ty1 ()
+ in (SOME ty)
+end)
+ in ( LrTable.NT 18, ( result, COLON1left, ty1right), rest671)
+end
+| ( 138, ( ( _, ( MlyValue.clausesTop clausesTop1, clausesTop1left,
+clausesTop1right)) :: rest671)) => let val result = MlyValue.funs (fn
+ _ => let val (clausesTop as clausesTop1) = clausesTop1 ()
+ in ([clausesTop])
+end)
+ in ( LrTable.NT 59, ( result, clausesTop1left, clausesTop1right),
+rest671)
+end
+| ( 139, ( ( _, ( MlyValue.funs funs1, _, funs1right)) :: _ :: ( _, (
+ MlyValue.clausesTop clausesTop1, clausesTop1left, _)) :: rest671)) =>
+ let val result = MlyValue.funs (fn _ => let val (clausesTop as
+clausesTop1) = clausesTop1 ()
+ val (funs as funs1) = funs1 ()
+ in (clausesTop :: funs)
+end)
+ in ( LrTable.NT 59, ( result, clausesTop1left, funs1right), rest671)
+
+end
+| ( 140, ( ( _, ( MlyValue.clauses clauses1, clauses1left,
+clauses1right)) :: rest671)) => let val result = MlyValue.clausesTop
+ (fn _ => let val (clauses as clauses1) = clauses1 ()
+ in (Vector.fromList clauses)
+end)
+ in ( LrTable.NT 12, ( result, clauses1left, clauses1right), rest671)
+
+end
+| ( 141, ( ( _, ( MlyValue.clause clause1, clause1left, clause1right)
+) :: rest671)) => let val result = MlyValue.clauses (fn _ => let val
+ (clause as clause1) = clause1 ()
+ in ([clause])
+end)
+ in ( LrTable.NT 11, ( result, clause1left, clause1right), rest671)
+
+end
+| ( 142, ( ( _, ( MlyValue.clauses clauses1, _, clauses1right)) :: _
+ :: ( _, ( MlyValue.clause clause1, clause1left, _)) :: rest671)) =>
+ let val result = MlyValue.clauses (fn _ => let val (clause as
+clause1) = clause1 ()
+ val (clauses as clauses1) = clauses1 ()
+ in (clause :: clauses)
+end)
+ in ( LrTable.NT 11, ( result, clause1left, clauses1right), rest671)
+
+end
+| ( 143, ( ( _, ( MlyValue.exp exp1, _, exp1right)) :: _ :: ( _, (
+MlyValue.constraint constraint1, _, _)) :: ( _, ( MlyValue.apats
+apats1, apats1left, _)) :: rest671)) => let val result =
+MlyValue.clause (fn _ => let val (apats as apats1) = apats1 ()
+ val (constraint as constraint1) = constraint1 ()
+ val (exp as exp1) = exp1 ()
+ in (
+{pats = Vector.fromList apats,
+ resultType = constraint,
+ body = exp}
+)
+end)
+ in ( LrTable.NT 10, ( result, apats1left, exp1right), rest671)
+end
+| ( 144, ( ( _, ( MlyValue.typBind' typBind'1, (typBind'left as
+typBind'1left), (typBind'right as typBind'1right))) :: rest671)) =>
+ let val result = MlyValue.typBind (fn _ => let val (typBind' as
+typBind'1) = typBind'1 ()
+ in (
+let
+ val typBind = Vector.fromList typBind'
+ val b =
+ TypBind.makeRegion'
+ (TypBind.T typBind, typBind'left, typBind'right)
+ in
+ b
+ end
+)
+end)
+ in ( LrTable.NT 145, ( result, typBind'1left, typBind'1right),
+rest671)
+end
+| ( 145, ( ( _, ( MlyValue.typBind'' typBind''1, _, typBind''1right))
+ :: ( _, ( MlyValue.ty ty1, _, _)) :: _ :: ( _, ( MlyValue.tycon
+tycon1, _, _)) :: ( _, ( MlyValue.tyvars tyvars1, tyvars1left, _)) ::
+rest671)) => let val result = MlyValue.typBind' (fn _ => let val (
+tyvars as tyvars1) = tyvars1 ()
+ val (tycon as tycon1) = tycon1 ()
+ val (ty as ty1) = ty1 ()
+ val (typBind'' as typBind''1) = typBind''1 ()
+ in ({def = ty, tycon = tycon, tyvars = tyvars} :: typBind'')
+end)
+ in ( LrTable.NT 146, ( result, tyvars1left, typBind''1right), rest671
+)
+end
+| ( 146, ( rest671)) => let val result = MlyValue.typBind'' (fn _ =>
+ ([]))
+ in ( LrTable.NT 147, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 147, ( ( _, ( MlyValue.typBind' typBind'1, _, typBind'1right)) ::
+ ( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.typBind'' (fn _ => let val (typBind' as typBind'1) =
+typBind'1 ()
+ in (typBind')
+end)
+ in ( LrTable.NT 147, ( result, AND1left, typBind'1right), rest671)
+
+end
+| ( 148, ( ( _, ( MlyValue.tyvarseq tyvarseq1, tyvarseq1left,
+tyvarseq1right)) :: rest671)) => let val result = MlyValue.tyvars (fn
+ _ => let val (tyvarseq as tyvarseq1) = tyvarseq1 ()
+ in (tyvarseq)
+end)
+ in ( LrTable.NT 152, ( result, tyvarseq1left, tyvarseq1right),
+rest671)
+end
+| ( 149, ( rest671)) => let val result = MlyValue.tyvars (fn _ => (
+Vector.new0 ()))
+ in ( LrTable.NT 152, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 150, ( ( _, ( MlyValue.tyvar tyvar1, tyvar1left, tyvar1right)) ::
+ rest671)) => let val result = MlyValue.tyvarseq (fn _ => let val (
+tyvar as tyvar1) = tyvar1 ()
+ in (Vector.new1 tyvar)
+end)
+ in ( LrTable.NT 153, ( result, tyvar1left, tyvar1right), rest671)
+end
+| ( 151, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.tyvar_pc
+tyvar_pc1, _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let
+ val result = MlyValue.tyvarseq (fn _ => let val (tyvar_pc as
+tyvar_pc1) = tyvar_pc1 ()
+ in (
+let
+ val v = Vector.fromList tyvar_pc
+ val () =
+ reportDuplicates
+ (v, {equals = Tyvar.sameName,
+ layout = Tyvar.layout,
+ name = "type variable",
+ region = Tyvar.region,
+ term = fn () => Layout.tuple (Vector.toListMap
+ (v, Tyvar.layout))})
+ in
+ v
+ end
+)
+end)
+ in ( LrTable.NT 153, ( result, LPAREN1left, RPAREN1right), rest671)
+
+end
+| ( 152, ( ( _, ( MlyValue.tyvar tyvar1, tyvar1left, tyvar1right)) ::
+ rest671)) => let val result = MlyValue.tyvar_pc (fn _ => let val (
+tyvar as tyvar1) = tyvar1 ()
+ in ([tyvar])
+end)
+ in ( LrTable.NT 151, ( result, tyvar1left, tyvar1right), rest671)
+end
+| ( 153, ( ( _, ( MlyValue.tyvar_pc tyvar_pc1, _, tyvar_pc1right)) ::
+ _ :: ( _, ( MlyValue.tyvar tyvar1, tyvar1left, _)) :: rest671)) =>
+ let val result = MlyValue.tyvar_pc (fn _ => let val (tyvar as
+tyvar1) = tyvar1 ()
+ val (tyvar_pc as tyvar_pc1) = tyvar_pc1 ()
+ in (tyvar :: tyvar_pc)
+end)
+ in ( LrTable.NT 151, ( result, tyvar1left, tyvar_pc1right), rest671)
+
+end
+| ( 154, ( ( _, ( MlyValue.constr constr1, constr1left, constr1right)
+) :: rest671)) => let val result = MlyValue.constrs (fn _ => let val
+ (constr as constr1) = constr1 ()
+ in ([constr])
+end)
+ in ( LrTable.NT 19, ( result, constr1left, constr1right), rest671)
+
+end
+| ( 155, ( ( _, ( MlyValue.constrs constrs1, _, constrs1right)) :: _
+ :: ( _, ( MlyValue.constr constr1, constr1left, _)) :: rest671)) =>
+ let val result = MlyValue.constrs (fn _ => let val (constr as
+constr1) = constr1 ()
+ val (constrs as constrs1) = constrs1 ()
+ in (constr :: constrs)
+end)
+ in ( LrTable.NT 19, ( result, constr1left, constrs1right), rest671)
+
+end
+| ( 156, ( ( _, ( MlyValue.opcon opcon1, opcon1left, opcon1right)) ::
+ rest671)) => let val result = MlyValue.constr (fn _ => let val (
+opcon as opcon1) = opcon1 ()
+ in (opcon, NONE)
+end)
+ in ( LrTable.NT 17, ( result, opcon1left, opcon1right), rest671)
+end
+| ( 157, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: _ :: ( _, (
+MlyValue.opcon opcon1, opcon1left, _)) :: rest671)) => let val result
+ = MlyValue.constr (fn _ => let val (opcon as opcon1) = opcon1 ()
+ val (ty as ty1) = ty1 ()
+ in (opcon, SOME ty)
+end)
+ in ( LrTable.NT 17, ( result, opcon1left, ty1right), rest671)
+end
+| ( 158, ( ( _, ( MlyValue.con con1, con1left, con1right)) :: rest671
+)) => let val result = MlyValue.opcon (fn _ => let val (con as con1)
+ = con1 ()
+ in (con)
+end)
+ in ( LrTable.NT 79, ( result, con1left, con1right), rest671)
+end
+| ( 159, ( ( _, ( MlyValue.con con1, _, con1right)) :: ( _, ( _,
+OP1left, _)) :: rest671)) => let val result = MlyValue.opcon (fn _ =>
+ let val (con as con1) = con1 ()
+ in (con)
+end)
+ in ( LrTable.NT 79, ( result, OP1left, con1right), rest671)
+end
+| ( 160, ( ( _, ( MlyValue.eb eb1, eb1left, eb1right)) :: rest671))
+ => let val result = MlyValue.ebs (fn _ => let val (eb as eb1) = eb1
+ ()
+ in ([eb])
+end)
+ in ( LrTable.NT 39, ( result, eb1left, eb1right), rest671)
+end
+| ( 161, ( ( _, ( MlyValue.ebs ebs1, _, ebs1right)) :: _ :: ( _, (
+MlyValue.eb eb1, eb1left, _)) :: rest671)) => let val result =
+MlyValue.ebs (fn _ => let val (eb as eb1) = eb1 ()
+ val (ebs as ebs1) = ebs1 ()
+ in (eb::ebs)
+end)
+ in ( LrTable.NT 39, ( result, eb1left, ebs1right), rest671)
+end
+| ( 162, ( ( _, ( MlyValue.ebrhs ebrhs1, _, ebrhs1right)) :: ( _, (
+MlyValue.opcon opcon1, opcon1left, _)) :: rest671)) => let val result
+ = MlyValue.eb (fn _ => let val (opcon as opcon1) = opcon1 ()
+ val (ebrhs as ebrhs1) = ebrhs1 ()
+ in (Con.ensureRedefine opcon; (opcon, ebrhs))
+end)
+ in ( LrTable.NT 36, ( result, opcon1left, ebrhs1right), rest671)
+end
+| ( 163, ( ( _, ( MlyValue.ebrhsnode ebrhsnode1, (ebrhsnodeleft as
+ebrhsnode1left), (ebrhsnoderight as ebrhsnode1right))) :: rest671)) =>
+ let val result = MlyValue.ebrhs (fn _ => let val (ebrhsnode as
+ebrhsnode1) = ebrhsnode1 ()
+ in (
+EbRhs.makeRegion' (ebrhsnode,
+ ebrhsnodeleft, ebrhsnoderight)
+)
+end)
+ in ( LrTable.NT 37, ( result, ebrhsnode1left, ebrhsnode1right),
+rest671)
+end
+| ( 164, ( rest671)) => let val result = MlyValue.ebrhsnode (fn _ =>
+ (EbRhs.Gen NONE))
+ in ( LrTable.NT 38, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 165, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: ( _, ( _, OF1left
+, _)) :: rest671)) => let val result = MlyValue.ebrhsnode (fn _ =>
+ let val (ty as ty1) = ty1 ()
+ in (EbRhs.Gen (SOME ty))
+end)
+ in ( LrTable.NT 38, ( result, OF1left, ty1right), rest671)
+end
+| ( 166, ( ( _, ( MlyValue.longcon longcon1, _, longcon1right)) :: (
+ _, ( _, EQUALOP1left, _)) :: rest671)) => let val result =
+MlyValue.ebrhsnode (fn _ => let val (longcon as longcon1) = longcon1
+ ()
+ in (EbRhs.Def longcon)
+end)
+ in ( LrTable.NT 38, ( result, EQUALOP1left, longcon1right), rest671)
+
+end
+| ( 167, ( ( _, ( MlyValue.longcon longcon1, _, longcon1right)) :: _
+ :: ( _, ( _, EQUALOP1left, _)) :: rest671)) => let val result =
+MlyValue.ebrhsnode (fn _ => let val (longcon as longcon1) = longcon1
+ ()
+ in (EbRhs.Def longcon)
+end)
+ in ( LrTable.NT 38, ( result, EQUALOP1left, longcon1right), rest671)
+
+end
+| ( 168, ( ( _, ( _, INFIX1left, INFIX1right)) :: rest671)) => let
+ val result = MlyValue.fixity (fn _ => (Fixity.Infix NONE))
+ in ( LrTable.NT 53, ( result, INFIX1left, INFIX1right), rest671)
+end
+| ( 169, ( ( _, ( MlyValue.digit digit1, _, digit1right)) :: ( _, ( _
+, INFIX1left, _)) :: rest671)) => let val result = MlyValue.fixity
+ (fn _ => let val (digit as digit1) = digit1 ()
+ in (Fixity.Infix (SOME digit))
+end)
+ in ( LrTable.NT 53, ( result, INFIX1left, digit1right), rest671)
+end
+| ( 170, ( ( _, ( _, INFIXR1left, INFIXR1right)) :: rest671)) => let
+ val result = MlyValue.fixity (fn _ => (Fixity.Infixr NONE))
+ in ( LrTable.NT 53, ( result, INFIXR1left, INFIXR1right), rest671)
+
+end
+| ( 171, ( ( _, ( MlyValue.digit digit1, _, digit1right)) :: ( _, ( _
+, INFIXR1left, _)) :: rest671)) => let val result = MlyValue.fixity
+ (fn _ => let val (digit as digit1) = digit1 ()
+ in (Fixity.Infixr (SOME digit))
+end)
+ in ( LrTable.NT 53, ( result, INFIXR1left, digit1right), rest671)
+end
+| ( 172, ( ( _, ( _, NONFIX1left, NONFIX1right)) :: rest671)) => let
+ val result = MlyValue.fixity (fn _ => (Fixity.Nonfix))
+ in ( LrTable.NT 53, ( result, NONFIX1left, NONFIX1right), rest671)
+
+end
+| ( 173, ( rest671)) => let val result = MlyValue.priority (fn _ =>
+ (Priority.T NONE))
+ in ( LrTable.NT 87, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 174, ( ( _, ( MlyValue.digit digit1, digit1left, digit1right)) ::
+ rest671)) => let val result = MlyValue.priority (fn _ => let val (
+digit as digit1) = digit1 ()
+ in (Priority.T (SOME digit))
+end)
+ in ( LrTable.NT 87, ( result, digit1left, digit1right), rest671)
+end
+| ( 175, ( ( _, ( MlyValue.INT INT1, INT1left, INT1right)) :: rest671
+)) => let val result = MlyValue.int (fn _ => let val (INT as INT1) =
+ INT1 ()
+ in (
+let
+ val {digits, negate, radix} = INT
+ in
+ case StringCvt.scanString (fn r => IntInf.scan (radix, r)) digits of
+ NONE => Error.bug "parser saw invalid int"
+ | SOME i => if negate then ~ i else i
+ end
+)
+end)
+ in ( LrTable.NT 63, ( result, INT1left, INT1right), rest671)
+end
+| ( 176, ( ( _, ( MlyValue.WORD WORD1, WORD1left, WORD1right)) ::
+rest671)) => let val result = MlyValue.word (fn _ => let val (WORD
+ as WORD1) = WORD1 ()
+ in (
+let
+ val {digits, radix} = WORD
+ in
+ case StringCvt.scanString (fn r => IntInf.scan (radix, r)) digits of
+ NONE => Error.bug "parser saw invalid word"
+ | SOME i => i
+ end
+)
+end)
+ in ( LrTable.NT 167, ( result, WORD1left, WORD1right), rest671)
+end
+| ( 177, ( ( _, ( MlyValue.INT INT1, (INTleft as INT1left), (INTright
+ as INT1right))) :: rest671)) => let val result = MlyValue.digit (fn
+ _ => let val (INT as INT1) = INT1 ()
+ in (
+let
+ val {digits, negate, radix} = INT
+ in
+ if 1 = String.size digits andalso not negate andalso radix = StringCvt.DEC
+ then valOf (Int.fromString digits)
+ else let
+ open Layout
+ val _ =
+ Control.error (reg (INTleft, INTright),
+ str "invalid digit in infix declaration",
+ empty)
+ in
+ 0
+ end
+ end
+)
+end)
+ in ( LrTable.NT 35, ( result, INT1left, INT1right), rest671)
+end
+| ( 178, ( ( _, ( MlyValue.datatypeRhsnode datatypeRhsnode1, (
+datatypeRhsnodeleft as datatypeRhsnode1left), (datatypeRhsnoderight
+ as datatypeRhsnode1right))) :: rest671)) => let val result =
+MlyValue.datatypeRhs (fn _ => let val (datatypeRhsnode as
+datatypeRhsnode1) = datatypeRhsnode1 ()
+ in (
+DatatypeRhs.makeRegion' (datatypeRhsnode,
+ datatypeRhsnodeleft, datatypeRhsnoderight)
+)
+end)
+ in ( LrTable.NT 23, ( result, datatypeRhsnode1left,
+datatypeRhsnode1right), rest671)
+end
+| ( 179, ( ( _, ( MlyValue.datatypeRhsnodeNoWithtype
+datatypeRhsnodeNoWithtype1, (datatypeRhsnodeNoWithtypeleft as
+datatypeRhsnodeNoWithtype1left), (datatypeRhsnodeNoWithtyperight as
+datatypeRhsnodeNoWithtype1right))) :: rest671)) => let val result =
+MlyValue.datatypeRhsNoWithtype (fn _ => let val (
+datatypeRhsnodeNoWithtype as datatypeRhsnodeNoWithtype1) =
+datatypeRhsnodeNoWithtype1 ()
+ in (
+DatatypeRhs.makeRegion' (datatypeRhsnodeNoWithtype,
+ datatypeRhsnodeNoWithtypeleft,
+ datatypeRhsnodeNoWithtyperight)
+)
+end)
+ in ( LrTable.NT 24, ( result, datatypeRhsnodeNoWithtype1left,
+datatypeRhsnodeNoWithtype1right), rest671)
+end
+| ( 180, ( ( _, ( MlyValue.repl repl1, repl1left, repl1right)) ::
+rest671)) => let val result = MlyValue.datatypeRhsnode (fn _ => let
+ val (repl as repl1) = repl1 ()
+ in (repl)
+end)
+ in ( LrTable.NT 25, ( result, repl1left, repl1right), rest671)
+end
+| ( 181, ( ( _, ( MlyValue.datBind datBind1, datBind1left,
+datBind1right)) :: rest671)) => let val result =
+MlyValue.datatypeRhsnode (fn _ => let val (datBind as datBind1) =
+datBind1 ()
+ in (DatatypeRhs.DatBind datBind)
+end)
+ in ( LrTable.NT 25, ( result, datBind1left, datBind1right), rest671)
+
+end
+| ( 182, ( ( _, ( MlyValue.repl repl1, repl1left, repl1right)) ::
+rest671)) => let val result = MlyValue.datatypeRhsnodeNoWithtype (fn
+ _ => let val (repl as repl1) = repl1 ()
+ in (repl)
+end)
+ in ( LrTable.NT 26, ( result, repl1left, repl1right), rest671)
+end
+| ( 183, ( ( _, ( MlyValue.datBindNoWithtype datBindNoWithtype1,
+datBindNoWithtype1left, datBindNoWithtype1right)) :: rest671)) => let
+ val result = MlyValue.datatypeRhsnodeNoWithtype (fn _ => let val (
+datBindNoWithtype as datBindNoWithtype1) = datBindNoWithtype1 ()
+ in (DatatypeRhs.DatBind datBindNoWithtype)
+end)
+ in ( LrTable.NT 26, ( result, datBindNoWithtype1left,
+datBindNoWithtype1right), rest671)
+end
+| ( 184, ( ( _, ( MlyValue.longtycon longtycon1, _, longtycon1right))
+ :: _ :: _ :: ( _, ( MlyValue.tycon tycon1, _, _)) :: ( _, (
+MlyValue.tyvars tyvars1, (tyvarsleft as tyvars1left), tyvarsright)) ::
+ rest671)) => let val result = MlyValue.repl (fn _ => let val (
+tyvars as tyvars1) = tyvars1 ()
+ val (tycon as tycon1) = tycon1 ()
+ val (longtycon as longtycon1) = longtycon1 ()
+ in (
+if Vector.isEmpty tyvars
+ then ()
+ else error (reg (tyvarsleft, tyvarsright),
+ "nonempty tyvars in datatype repl")
+ ; DatatypeRhs.Repl {lhs = tycon, rhs = longtycon}
+)
+end)
+ in ( LrTable.NT 89, ( result, tyvars1left, longtycon1right), rest671)
+
+end
+| ( 185, ( ( _, ( MlyValue.withtypes withtypes1, _, (withtypesright
+ as withtypes1right))) :: ( _, ( MlyValue.dbs dbs1, (dbsleft as
+dbs1left), _)) :: rest671)) => let val result = MlyValue.datBind (fn
+ _ => let val (dbs as dbs1) = dbs1 ()
+ val (withtypes as withtypes1) = withtypes1 ()
+ in (DatBind.make (dbs, withtypes, dbsleft, withtypesright))
+end)
+ in ( LrTable.NT 21, ( result, dbs1left, withtypes1right), rest671)
+
+end
+| ( 186, ( ( _, ( MlyValue.dbs dbs1, (dbsleft as dbs1left), (dbsright
+ as dbs1right))) :: rest671)) => let val result =
+MlyValue.datBindNoWithtype (fn _ => let val (dbs as dbs1) = dbs1 ()
+ in (DatBind.make (dbs, TypBind.empty, dbsleft, dbsright))
+end)
+ in ( LrTable.NT 22, ( result, dbs1left, dbs1right), rest671)
+end
+| ( 187, ( ( _, ( MlyValue.dbs' dbs'1, dbs'1left, dbs'1right)) ::
+rest671)) => let val result = MlyValue.dbs (fn _ => let val (dbs'
+ as dbs'1) = dbs'1 ()
+ in (Vector.fromList dbs')
+end)
+ in ( LrTable.NT 28, ( result, dbs'1left, dbs'1right), rest671)
+end
+| ( 188, ( ( _, ( MlyValue.db db1, db1left, db1right)) :: rest671))
+ => let val result = MlyValue.dbs' (fn _ => let val (db as db1) =
+db1 ()
+ in ([db])
+end)
+ in ( LrTable.NT 29, ( result, db1left, db1right), rest671)
+end
+| ( 189, ( ( _, ( MlyValue.dbs' dbs'1, _, dbs'1right)) :: _ :: ( _, (
+ MlyValue.db db1, db1left, _)) :: rest671)) => let val result =
+MlyValue.dbs' (fn _ => let val (db as db1) = db1 ()
+ val (dbs' as dbs'1) = dbs'1 ()
+ in (db :: dbs')
+end)
+ in ( LrTable.NT 29, ( result, db1left, dbs'1right), rest671)
+end
+| ( 190, ( ( _, ( MlyValue.constrs constrs1, _, constrs1right)) :: _
+ :: ( _, ( MlyValue.tycon tycon1, _, _)) :: ( _, ( MlyValue.tyvars
+tyvars1, tyvars1left, _)) :: rest671)) => let val result =
+MlyValue.db (fn _ => let val (tyvars as tyvars1) = tyvars1 ()
+ val (tycon as tycon1) = tycon1 ()
+ val (constrs as constrs1) = constrs1 ()
+ in (
+{cons = Vector.fromList constrs,
+ tycon = tycon,
+ tyvars = tyvars}
+)
+end)
+ in ( LrTable.NT 27, ( result, tyvars1left, constrs1right), rest671)
+
+end
+| ( 191, ( rest671)) => let val result = MlyValue.withtypes (fn _ =>
+ (TypBind.empty))
+ in ( LrTable.NT 166, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 192, ( ( _, ( MlyValue.typBind typBind1, _, typBind1right)) :: (
+ _, ( _, WITHTYPE1left, _)) :: rest671)) => let val result =
+MlyValue.withtypes (fn _ => let val (typBind as typBind1) = typBind1
+ ()
+ in (typBind)
+end)
+ in ( LrTable.NT 166, ( result, WITHTYPE1left, typBind1right), rest671
+)
+end
+| ( 193, ( ( _, ( MlyValue.longvar longvar1, longvar1left,
+longvar1right)) :: rest671)) => let val result = MlyValue.longvarands
+ (fn _ => let val (longvar as longvar1) = longvar1 ()
+ in ([longvar])
+end)
+ in ( LrTable.NT 74, ( result, longvar1left, longvar1right), rest671)
+
+end
+| ( 194, ( ( _, ( MlyValue.longvarands longvarands1, _,
+longvarands1right)) :: _ :: ( _, ( MlyValue.longvar longvar1,
+longvar1left, _)) :: rest671)) => let val result =
+MlyValue.longvarands (fn _ => let val (longvar as longvar1) =
+longvar1 ()
+ val (longvarands as longvarands1) = longvarands1 ()
+ in (longvar :: longvarands)
+end)
+ in ( LrTable.NT 74, ( result, longvar1left, longvarands1right),
+rest671)
+end
+| ( 195, ( ( _, ( MlyValue.rules rules1, (rulesleft as rules1left), (
+rulesright as rules1right))) :: rest671)) => let val result =
+MlyValue.match (fn _ => let val (rules as rules1) = rules1 ()
+ in (
+Match.makeRegion' (Match.T (Vector.fromList rules),
+ rulesleft, rulesright)
+)
+end)
+ in ( LrTable.NT 77, ( result, rules1left, rules1right), rest671)
+end
+| ( 196, ( ( _, ( MlyValue.rule rule1, rule1left, rule1right)) ::
+rest671)) => let val result = MlyValue.rules (fn _ => let val (rule
+ as rule1) = rule1 ()
+ in ([rule])
+end)
+ in ( LrTable.NT 91, ( result, rule1left, rule1right), rest671)
+end
+| ( 197, ( ( _, ( MlyValue.rules rules1, _, rules1right)) :: _ :: ( _
+, ( MlyValue.rule rule1, rule1left, _)) :: rest671)) => let val
+result = MlyValue.rules (fn _ => let val (rule as rule1) = rule1 ()
+ val (rules as rules1) = rules1 ()
+ in (rule :: rules)
+end)
+ in ( LrTable.NT 91, ( result, rule1left, rules1right), rest671)
+end
+| ( 198, ( ( _, ( MlyValue.exp exp1, _, exp1right)) :: _ :: ( _, (
+MlyValue.pat pat1, pat1left, _)) :: rest671)) => let val result =
+MlyValue.rule (fn _ => let val (pat as pat1) = pat1 ()
+ val (exp as exp1) = exp1 ()
+ in ((pat,exp))
+end)
+ in ( LrTable.NT 90, ( result, pat1left, exp1right), rest671)
+end
+| ( 199, ( ( _, ( MlyValue.exp exp1, _, exp1right)) :: _ :: ( _, (
+MlyValue.field field1, field1left, _)) :: rest671)) => let val result
+ = MlyValue.elabel (fn _ => let val (field as field1) = field1 ()
+ val (exp as exp1) = exp1 ()
+ in (field,exp)
+end)
+ in ( LrTable.NT 40, ( result, field1left, exp1right), rest671)
+end
+| ( 200, ( ( _, ( MlyValue.elabels elabels1, _, elabels1right)) :: _
+ :: ( _, ( MlyValue.elabel elabel1, elabel1left, _)) :: rest671)) =>
+ let val result = MlyValue.elabels (fn _ => let val (elabel as
+elabel1) = elabel1 ()
+ val (elabels as elabels1) = elabels1 ()
+ in (elabel :: elabels)
+end)
+ in ( LrTable.NT 41, ( result, elabel1left, elabels1right), rest671)
+
+end
+| ( 201, ( ( _, ( MlyValue.elabel elabel1, elabel1left, elabel1right)
+) :: rest671)) => let val result = MlyValue.elabels (fn _ => let val
+ (elabel as elabel1) = elabel1 ()
+ in ([elabel])
+end)
+ in ( LrTable.NT 41, ( result, elabel1left, elabel1right), rest671)
+
+end
+| ( 202, ( ( _, ( MlyValue.exp exp2, _, exp2right)) :: _ :: ( _, (
+MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val result =
+MlyValue.exp_ps (fn _ => let val exp1 = exp1 ()
+ val exp2 = exp2 ()
+ in ([exp1, exp2])
+end)
+ in ( LrTable.NT 47, ( result, exp1left, exp2right), rest671)
+end
+| ( 203, ( ( _, ( MlyValue.exp_ps exp_ps1, _, exp_ps1right)) :: _ ::
+( _, ( MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val
+result = MlyValue.exp_ps (fn _ => let val (exp as exp1) = exp1 ()
+ val (exp_ps as exp_ps1) = exp_ps1 ()
+ in (exp :: exp_ps)
+end)
+ in ( LrTable.NT 47, ( result, exp1left, exp_ps1right), rest671)
+end
+| ( 204, ( ( _, ( MlyValue.expnode expnode1, (expnodeleft as
+expnode1left), (expnoderight as expnode1right))) :: rest671)) => let
+ val result = MlyValue.exp (fn _ => let val (expnode as expnode1) =
+expnode1 ()
+ in (Exp.makeRegion' (expnode, expnodeleft, expnoderight))
+end)
+ in ( LrTable.NT 44, ( result, expnode1left, expnode1right), rest671)
+
+end
+| ( 205, ( ( _, ( MlyValue.match match1, _, match1right)) :: _ :: ( _
+, ( MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val result =
+ MlyValue.expnode (fn _ => let val (exp as exp1) = exp1 ()
+ val (match as match1) = match1 ()
+ in (Exp.Handle (exp, match))
+end)
+ in ( LrTable.NT 48, ( result, exp1left, match1right), rest671)
+end
+| ( 206, ( ( _, ( MlyValue.exp exp2, _, exp2right)) :: _ :: ( _, (
+MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val result =
+MlyValue.expnode (fn _ => let val exp1 = exp1 ()
+ val exp2 = exp2 ()
+ in (Exp.Orelse (exp1, exp2))
+end)
+ in ( LrTable.NT 48, ( result, exp1left, exp2right), rest671)
+end
+| ( 207, ( ( _, ( MlyValue.exp exp2, _, exp2right)) :: _ :: ( _, (
+MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val result =
+MlyValue.expnode (fn _ => let val exp1 = exp1 ()
+ val exp2 = exp2 ()
+ in (Exp.Andalso (exp1, exp2))
+end)
+ in ( LrTable.NT 48, ( result, exp1left, exp2right), rest671)
+end
+| ( 208, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: _ :: ( _, (
+MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val result =
+MlyValue.expnode (fn _ => let val (exp as exp1) = exp1 ()
+ val (ty as ty1) = ty1 ()
+ in (Exp.Constraint (exp, ty))
+end)
+ in ( LrTable.NT 48, ( result, exp1left, ty1right), rest671)
+end
+| ( 209, ( ( _, ( MlyValue.app_exp app_exp1, app_exp1left,
+app_exp1right)) :: rest671)) => let val result = MlyValue.expnode (fn
+ _ => let val (app_exp as app_exp1) = app_exp1 ()
+ in (Exp.FlatApp (Vector.fromList app_exp))
+end)
+ in ( LrTable.NT 48, ( result, app_exp1left, app_exp1right), rest671)
+
+end
+| ( 210, ( ( _, ( MlyValue.match match1, _, match1right)) :: ( _, ( _
+, FN1left, _)) :: rest671)) => let val result = MlyValue.expnode (fn
+ _ => let val (match as match1) = match1 ()
+ in (Exp.Fn match)
+end)
+ in ( LrTable.NT 48, ( result, FN1left, match1right), rest671)
+end
+| ( 211, ( ( _, ( MlyValue.match match1, _, match1right)) :: _ :: ( _
+, ( MlyValue.exp exp1, _, _)) :: ( _, ( _, CASE1left, _)) :: rest671))
+ => let val result = MlyValue.expnode (fn _ => let val (exp as exp1)
+ = exp1 ()
+ val (match as match1) = match1 ()
+ in (Exp.Case (exp, match))
+end)
+ in ( LrTable.NT 48, ( result, CASE1left, match1right), rest671)
+end
+| ( 212, ( ( _, ( MlyValue.exp exp2, _, exp2right)) :: _ :: ( _, (
+MlyValue.exp exp1, _, _)) :: ( _, ( _, WHILE1left, _)) :: rest671)) =>
+ let val result = MlyValue.expnode (fn _ => let val exp1 = exp1 ()
+ val exp2 = exp2 ()
+ in (Exp.While {test = exp1, expr = exp2})
+end)
+ in ( LrTable.NT 48, ( result, WHILE1left, exp2right), rest671)
+end
+| ( 213, ( ( _, ( MlyValue.exp exp3, _, exp3right)) :: _ :: ( _, (
+MlyValue.exp exp2, _, _)) :: _ :: ( _, ( MlyValue.exp exp1, _, _)) ::
+( _, ( _, IF1left, _)) :: rest671)) => let val result =
+MlyValue.expnode (fn _ => let val exp1 = exp1 ()
+ val exp2 = exp2 ()
+ val exp3 = exp3 ()
+ in (Exp.If (exp1, exp2, exp3))
+end)
+ in ( LrTable.NT 48, ( result, IF1left, exp3right), rest671)
+end
+| ( 214, ( ( _, ( MlyValue.exp exp1, _, exp1right)) :: ( _, ( _,
+RAISE1left, _)) :: rest671)) => let val result = MlyValue.expnode (fn
+ _ => let val (exp as exp1) = exp1 ()
+ in (Exp.Raise exp)
+end)
+ in ( LrTable.NT 48, ( result, RAISE1left, exp1right), rest671)
+end
+| ( 215, ( ( _, ( MlyValue.app_exp1 app_exp11, _, app_exp11right)) ::
+ ( _, ( MlyValue.aexp aexp1, (aexpleft as aexp1left), aexpright)) ::
+rest671)) => let val result = MlyValue.app_exp (fn _ => let val (
+aexp as aexp1) = aexp1 ()
+ val (app_exp1 as app_exp11) = app_exp11 ()
+ in (
+Exp.makeRegion' (aexp, aexpleft, aexpright)
+ :: app_exp1
+)
+end)
+ in ( LrTable.NT 6, ( result, aexp1left, app_exp11right), rest671)
+end
+| ( 216, ( ( _, ( MlyValue.app_exp1 app_exp11, _, app_exp11right)) ::
+ ( _, ( MlyValue.longvid longvid1, (longvidleft as longvid1left),
+longvidright)) :: rest671)) => let val result = MlyValue.app_exp (fn
+ _ => let val (longvid as longvid1) = longvid1 ()
+ val (app_exp1 as app_exp11) = app_exp11 ()
+ in (
+Exp.makeRegion' (Exp.Var {name = longvid,
+ fixop = Fixop.None},
+ longvidleft, longvidright)
+ :: app_exp1
+)
+end)
+ in ( LrTable.NT 6, ( result, longvid1left, app_exp11right), rest671)
+
+end
+| ( 217, ( rest671)) => let val result = MlyValue.app_exp1 (fn _ =>
+ ([]))
+ in ( LrTable.NT 7, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 218, ( ( _, ( MlyValue.app_exp app_exp1, app_exp1left,
+app_exp1right)) :: rest671)) => let val result = MlyValue.app_exp1
+ (fn _ => let val (app_exp as app_exp1) = app_exp1 ()
+ in (app_exp)
+end)
+ in ( LrTable.NT 7, ( result, app_exp1left, app_exp1right), rest671)
+
+end
+| ( 219, ( ( _, ( MlyValue.vid vid1, _, vid1right)) :: ( _, ( _,
+OP1left, _)) :: rest671)) => let val result = MlyValue.aexp (fn _ =>
+ let val (vid as vid1) = vid1 ()
+ in (
+Exp.Var {name = Longvid.short vid,
+ fixop = Fixop.Op}
+)
+end)
+ in ( LrTable.NT 0, ( result, OP1left, vid1right), rest671)
+end
+| ( 220, ( ( _, ( MlyValue.const const1, const1left, const1right)) ::
+ rest671)) => let val result = MlyValue.aexp (fn _ => let val (const
+ as const1) = const1 ()
+ in (Exp.Const const)
+end)
+ in ( LrTable.NT 0, ( result, const1left, const1right), rest671)
+end
+| ( 221, ( ( _, ( MlyValue.field field1, _, field1right)) :: ( _, ( _
+, HASH1left, _)) :: rest671)) => let val result = MlyValue.aexp (fn _
+ => let val (field as field1) = field1 ()
+ in (Exp.Selector field)
+end)
+ in ( LrTable.NT 0, ( result, HASH1left, field1right), rest671)
+end
+| ( 222, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.elabels
+elabels1, _, _)) :: ( _, ( _, LBRACE1left, _)) :: rest671)) => let
+ val result = MlyValue.aexp (fn _ => let val (elabels as elabels1) =
+ elabels1 ()
+ in (Exp.Record (Record.fromVector (Vector.fromList elabels)))
+end)
+ in ( LrTable.NT 0, ( result, LBRACE1left, RBRACE1right), rest671)
+end
+| ( 223, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( _, LBRACE1left, _))
+ :: rest671)) => let val result = MlyValue.aexp (fn _ => (Exp.unit))
+ in ( LrTable.NT 0, ( result, LBRACE1left, RBRACE1right), rest671)
+end
+| ( 224, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( _, LPAREN1left, _))
+ :: rest671)) => let val result = MlyValue.aexp (fn _ => (Exp.unit))
+ in ( LrTable.NT 0, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 225, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.expnode
+expnode1, _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let
+ val result = MlyValue.aexp (fn _ => let val (expnode as expnode1) =
+ expnode1 ()
+ in (expnode)
+end)
+ in ( LrTable.NT 0, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 226, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.exp_ps
+exp_ps1, _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let val
+ result = MlyValue.aexp (fn _ => let val (exp_ps as exp_ps1) =
+exp_ps1 ()
+ in (Exp.Seq (Vector.fromList exp_ps))
+end)
+ in ( LrTable.NT 0, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 227, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.exp_2c
+exp_2c1, _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let val
+ result = MlyValue.aexp (fn _ => let val (exp_2c as exp_2c1) =
+exp_2c1 ()
+ in (Exp.tuple (Vector.fromList exp_2c))
+end)
+ in ( LrTable.NT 0, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 228, ( ( _, ( _, _, RBRACKET1right)) :: ( _, ( MlyValue.exp_list
+exp_list1, _, _)) :: ( _, ( _, LBRACKET1left, _)) :: rest671)) => let
+ val result = MlyValue.aexp (fn _ => let val (exp_list as exp_list1)
+ = exp_list1 ()
+ in (Exp.List (Vector.fromList exp_list))
+end)
+ in ( LrTable.NT 0, ( result, LBRACKET1left, RBRACKET1right), rest671)
+
+end
+| ( 229, ( ( _, ( _, _, RBRACKET1right)) :: ( _, ( _, LBRACKET1left,
+ _)) :: rest671)) => let val result = MlyValue.aexp (fn _ => (
+Exp.List (Vector.new0 ())))
+ in ( LrTable.NT 0, ( result, LBRACKET1left, RBRACKET1right), rest671)
+
+end
+| ( 230, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.exp exp1, _, _
+)) :: _ :: ( _, ( MlyValue.decs decs1, _, _)) :: ( _, ( _, LET1left, _
+)) :: rest671)) => let val result = MlyValue.aexp (fn _ => let val (
+decs as decs1) = decs1 ()
+ val (exp as exp1) = exp1 ()
+ in (Exp.Let (decs, exp))
+end)
+ in ( LrTable.NT 0, ( result, LET1left, END1right), rest671)
+end
+| ( 231, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.exp_ps exp_ps1
+, exp_psleft, exp_psright)) :: _ :: ( _, ( MlyValue.decs decs1, _, _))
+ :: ( _, ( _, LET1left, _)) :: rest671)) => let val result =
+MlyValue.aexp (fn _ => let val (decs as decs1) = decs1 ()
+ val (exp_ps as exp_ps1) = exp_ps1 ()
+ in (
+Exp.Let (decs, Exp.makeRegion' (Exp.Seq (Vector.fromList exp_ps),
+ exp_psleft,
+ exp_psright))
+)
+end)
+ in ( LrTable.NT 0, ( result, LET1left, END1right), rest671)
+end
+| ( 232, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.string string1, _, _)) :: ( _, ( _,
+ADDRESS1left, _)) :: rest671)) => let val result = MlyValue.aexp (fn
+ _ => let val (string as string1) = string1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Exp.Prim (PrimKind.Address {name = string,
+ ty = ty})
+)
+end)
+ in ( LrTable.NT 0, ( result, ADDRESS1left, SEMICOLON1right), rest671)
+
+end
+| ( 233, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.string string1, _, _)) :: ( _, ( _,
+BUILD_CONST1left, _)) :: rest671)) => let val result = MlyValue.aexp
+ (fn _ => let val (string as string1) = string1 ()
+ val (ty as ty1) = ty1 ()
+ in (Exp.Prim (PrimKind.BuildConst {name = string, ty = ty}))
+end)
+ in ( LrTable.NT 0, ( result, BUILD_CONST1left, SEMICOLON1right),
+rest671)
+end
+| ( 234, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, (
+MlyValue.constOrBool constOrBool1, _, _)) :: _ :: ( _, ( MlyValue.ty
+ty1, _, _)) :: _ :: ( _, ( MlyValue.string string1, _, _)) :: ( _, ( _
+, COMMAND_LINE_CONST1left, _)) :: rest671)) => let val result =
+MlyValue.aexp (fn _ => let val (string as string1) = string1 ()
+ val (ty as ty1) = ty1 ()
+ val (constOrBool as constOrBool1) = constOrBool1 ()
+ in (
+Exp.Prim (PrimKind.CommandLineConst {name = string,
+ ty = ty,
+ value = constOrBool})
+)
+end)
+ in ( LrTable.NT 0, ( result, COMMAND_LINE_CONST1left, SEMICOLON1right
+), rest671)
+end
+| ( 235, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.string string1, _, _)) :: ( _, ( _,
+CONST1left, _)) :: rest671)) => let val result = MlyValue.aexp (fn _
+ => let val (string as string1) = string1 ()
+ val (ty as ty1) = ty1 ()
+ in (Exp.Prim (PrimKind.Const {name = string, ty = ty}))
+end)
+ in ( LrTable.NT 0, ( result, CONST1left, SEMICOLON1right), rest671)
+
+end
+| ( 236, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.ieattributes ieattributes1, _, _)) ::
+( _, ( MlyValue.string string1, _, _)) :: ( _, ( _, EXPORT1left, _))
+ :: rest671)) => let val result = MlyValue.aexp (fn _ => let val (
+string as string1) = string1 ()
+ val (ieattributes as ieattributes1) = ieattributes1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Exp.Prim (PrimKind.Export {attributes = ieattributes,
+ name = string,
+ ty = ty})
+)
+end)
+ in ( LrTable.NT 0, ( result, EXPORT1left, SEMICOLON1right), rest671)
+
+end
+| ( 237, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.ieattributes ieattributes1, _, _)) ::
+( _, ( MlyValue.string string1, _, _)) :: ( _, ( _, IMPORT1left, _))
+ :: rest671)) => let val result = MlyValue.aexp (fn _ => let val (
+string as string1) = string1 ()
+ val (ieattributes as ieattributes1) = ieattributes1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Exp.Prim (PrimKind.Import {attributes = ieattributes,
+ name = string,
+ ty = ty})
+)
+end)
+ in ( LrTable.NT 0, ( result, IMPORT1left, SEMICOLON1right), rest671)
+
+end
+| ( 238, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.ieattributes ieattributes1, _, _)) ::
+ _ :: ( _, ( _, IMPORT1left, _)) :: rest671)) => let val result =
+MlyValue.aexp (fn _ => let val (ieattributes as ieattributes1) =
+ieattributes1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Exp.Prim (PrimKind.IImport {attributes = ieattributes,
+ ty = ty})
+)
+end)
+ in ( LrTable.NT 0, ( result, IMPORT1left, SEMICOLON1right), rest671)
+
+end
+| ( 239, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.string string1, _, _)) :: ( _, ( _,
+PRIM1left, _)) :: rest671)) => let val result = MlyValue.aexp (fn _
+ => let val (string as string1) = string1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Exp.Prim (PrimKind.Prim {name = string,
+ ty = ty})
+)
+end)
+ in ( LrTable.NT 0, ( result, PRIM1left, SEMICOLON1right), rest671)
+
+end
+| ( 240, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: ( _, ( MlyValue.symattributes symattributes1, _, _))
+ :: ( _, ( MlyValue.string string1, _, _)) :: ( _, ( _, SYMBOL1left, _
+)) :: rest671)) => let val result = MlyValue.aexp (fn _ => let val (
+string as string1) = string1 ()
+ val (symattributes as symattributes1) = symattributes1 ()
+ val (ty as ty1) = ty1 ()
+ in (
+Exp.Prim (PrimKind.Symbol {attributes = symattributes,
+ name = string,
+ ty = ty})
+)
+end)
+ in ( LrTable.NT 0, ( result, SYMBOL1left, SEMICOLON1right), rest671)
+
+end
+| ( 241, ( ( _, ( _, _, SEMICOLON1right)) :: ( _, ( MlyValue.ty ty1,
+ _, _)) :: _ :: _ :: ( _, ( _, SYMBOL1left, _)) :: rest671)) => let
+ val result = MlyValue.aexp (fn _ => let val (ty as ty1) = ty1 ()
+ in (Exp.Prim (PrimKind.ISymbol {ty = ty}))
+end)
+ in ( LrTable.NT 0, ( result, SYMBOL1left, SEMICOLON1right), rest671)
+
+end
+| ( 242, ( rest671)) => let val result = MlyValue.ieattributes (fn _
+ => ([]))
+ in ( LrTable.NT 9, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 243, ( ( _, ( MlyValue.ieattributes ieattributes1, _,
+ieattributes1right)) :: ( _, ( MlyValue.id id1, (idleft as id1left),
+idright)) :: rest671)) => let val result = MlyValue.ieattributes (fn
+ _ => let val (id as id1) = id1 ()
+ val (ieattributes as ieattributes1) = ieattributes1 ()
+ in (
+let
+ val id = Symbol.toString (#1 id)
+ in
+ case id of
+ "cdecl" => PrimKind.ImportExportAttribute.Cdecl :: ieattributes
+ | "stdcall" => PrimKind.ImportExportAttribute.Stdcall :: ieattributes
+ | _ => (error (reg (idleft, idright), concat ["invalid attribute", id])
+ ; ieattributes)
+ end
+)
+end)
+ in ( LrTable.NT 9, ( result, id1left, ieattributes1right), rest671)
+
+end
+| ( 244, ( rest671)) => let val result = MlyValue.symattributes (fn
+ _ => ([]))
+ in ( LrTable.NT 130, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 245, ( ( _, ( MlyValue.symattributes symattributes1, _,
+symattributes1right)) :: ( _, ( MlyValue.id id1, (idleft as id1left),
+idright)) :: rest671)) => let val result = MlyValue.symattributes (fn
+ _ => let val (id as id1) = id1 ()
+ val (symattributes as symattributes1) = symattributes1 ()
+ in (
+let
+ val id = Symbol.toString (#1 id)
+ in
+ case id of
+ "alloc" => PrimKind.SymbolAttribute.Alloc :: symattributes
+ | _ => (error (reg (idleft, idright), concat ["invalid attribute", id])
+ ; symattributes)
+ end
+)
+end)
+ in ( LrTable.NT 130, ( result, id1left, symattributes1right), rest671
+)
+end
+| ( 246, ( ( _, ( MlyValue.exp_2c exp_2c1, _, exp_2c1right)) :: _ ::
+( _, ( MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val
+result = MlyValue.exp_2c (fn _ => let val (exp as exp1) = exp1 ()
+ val (exp_2c as exp_2c1) = exp_2c1 ()
+ in (exp :: exp_2c)
+end)
+ in ( LrTable.NT 45, ( result, exp1left, exp_2c1right), rest671)
+end
+| ( 247, ( ( _, ( MlyValue.exp exp2, _, exp2right)) :: _ :: ( _, (
+MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val result =
+MlyValue.exp_2c (fn _ => let val exp1 = exp1 ()
+ val exp2 = exp2 ()
+ in ([exp1, exp2])
+end)
+ in ( LrTable.NT 45, ( result, exp1left, exp2right), rest671)
+end
+| ( 248, ( ( _, ( MlyValue.exp exp1, exp1left, exp1right)) :: rest671
+)) => let val result = MlyValue.exp_list (fn _ => let val (exp as
+exp1) = exp1 ()
+ in ([exp])
+end)
+ in ( LrTable.NT 46, ( result, exp1left, exp1right), rest671)
+end
+| ( 249, ( ( _, ( MlyValue.exp_list exp_list1, _, exp_list1right)) ::
+ _ :: ( _, ( MlyValue.exp exp1, exp1left, _)) :: rest671)) => let val
+ result = MlyValue.exp_list (fn _ => let val (exp as exp1) = exp1 ()
+ val (exp_list as exp_list1) = exp_list1 ()
+ in (exp :: exp_list)
+end)
+ in ( LrTable.NT 46, ( result, exp1left, exp_list1right), rest671)
+end
+| ( 250, ( ( _, ( MlyValue.patnode patnode1, (patnodeleft as
+patnode1left), (patnoderight as patnode1right))) :: rest671)) => let
+ val result = MlyValue.pat (fn _ => let val (patnode as patnode1) =
+patnode1 ()
+ in (Pat.makeRegion' (patnode, patnodeleft, patnoderight))
+end)
+ in ( LrTable.NT 81, ( result, patnode1left, patnode1right), rest671)
+
+end
+| ( 251, ( ( _, ( MlyValue.pat pat2, _, pat2right)) :: _ :: ( _, (
+MlyValue.pat pat1, pat1left, _)) :: rest671)) => let val result =
+MlyValue.patnode (fn _ => let val pat1 = pat1 ()
+ val pat2 = pat2 ()
+ in (Pat.makeAs (pat1, pat2))
+end)
+ in ( LrTable.NT 85, ( result, pat1left, pat2right), rest671)
+end
+| ( 252, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: _ :: ( _, (
+MlyValue.pat pat1, pat1left, _)) :: rest671)) => let val result =
+MlyValue.patnode (fn _ => let val (pat as pat1) = pat1 ()
+ val (ty as ty1) = ty1 ()
+ in (Pat.Constraint (pat, ty))
+end)
+ in ( LrTable.NT 85, ( result, pat1left, ty1right), rest671)
+end
+| ( 253, ( ( _, ( MlyValue.apats apats1, apats1left, apats1right)) ::
+ rest671)) => let val result = MlyValue.patnode (fn _ => let val (
+apats as apats1) = apats1 ()
+ in (Pat.FlatApp (Vector.fromList apats))
+end)
+ in ( LrTable.NT 85, ( result, apats1left, apats1right), rest671)
+end
+| ( 254, ( ( _, ( MlyValue.apat apat1, apat1left, apat1right)) ::
+rest671)) => let val result = MlyValue.apats (fn _ => let val (apat
+ as apat1) = apat1 ()
+ in ([apat])
+end)
+ in ( LrTable.NT 5, ( result, apat1left, apat1right), rest671)
+end
+| ( 255, ( ( _, ( MlyValue.apats apats1, _, apats1right)) :: ( _, (
+MlyValue.apat apat1, apat1left, _)) :: rest671)) => let val result =
+MlyValue.apats (fn _ => let val (apat as apat1) = apat1 ()
+ val (apats as apats1) = apats1 ()
+ in (apat :: apats)
+end)
+ in ( LrTable.NT 5, ( result, apat1left, apats1right), rest671)
+end
+| ( 256, ( ( _, ( MlyValue.apatnode apatnode1, (apatnodeleft as
+apatnode1left), (apatnoderight as apatnode1right))) :: rest671)) =>
+ let val result = MlyValue.apat (fn _ => let val (apatnode as
+apatnode1) = apatnode1 ()
+ in (Pat.makeRegion' (apatnode, apatnodeleft, apatnoderight))
+end)
+ in ( LrTable.NT 2, ( result, apatnode1left, apatnode1right), rest671)
+
+end
+| ( 257, ( ( _, ( MlyValue.longvidNoEqual longvidNoEqual1,
+longvidNoEqual1left, longvidNoEqual1right)) :: rest671)) => let val
+result = MlyValue.apatnode (fn _ => let val (longvidNoEqual as
+longvidNoEqual1) = longvidNoEqual1 ()
+ in (
+Pat.Var {name = longvidNoEqual,
+ fixop = Fixop.None}
+)
+end)
+ in ( LrTable.NT 4, ( result, longvidNoEqual1left,
+longvidNoEqual1right), rest671)
+end
+| ( 258, ( ( _, ( MlyValue.vid vid1, _, vid1right)) :: ( _, ( _,
+OP1left, _)) :: rest671)) => let val result = MlyValue.apatnode (fn _
+ => let val (vid as vid1) = vid1 ()
+ in (
+Pat.Var {name = Longvid.short vid,
+ fixop = Fixop.Op}
+)
+end)
+ in ( LrTable.NT 4, ( result, OP1left, vid1right), rest671)
+end
+| ( 259, ( ( _, ( MlyValue.const const1, const1left, const1right)) ::
+ rest671)) => let val result = MlyValue.apatnode (fn _ => let val (
+const as const1) = const1 ()
+ in (
+let
+ val _ =
+ case Const.node const of
+ Const.Real r =>
+ let
+ open Layout
+ in
+ Control.error
+ (Const.region const,
+ seq [str "real constants are not allowed in patterns: ",
+ Const.layout const],
+ empty)
+ end
+ | _ => ()
+ in
+ Pat.Const const
+ end
+)
+end)
+ in ( LrTable.NT 4, ( result, const1left, const1right), rest671)
+end
+| ( 260, ( ( _, ( _, WILD1left, WILD1right)) :: rest671)) => let val
+ result = MlyValue.apatnode (fn _ => (Pat.Wild))
+ in ( LrTable.NT 4, ( result, WILD1left, WILD1right), rest671)
+end
+| ( 261, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.pats pats1,
+ _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let val result
+ = MlyValue.apatnode (fn _ => let val (pats as pats1) = pats1 ()
+ in (Pat.tuple (Vector.fromList pats))
+end)
+ in ( LrTable.NT 4, ( result, LPAREN1left, RPAREN1right), rest671)
+end
+| ( 262, ( ( _, ( _, _, RBRACKET1right)) :: ( _, ( MlyValue.pats
+pats1, _, _)) :: ( _, ( _, LBRACKET1left, _)) :: rest671)) => let val
+ result = MlyValue.apatnode (fn _ => let val (pats as pats1) = pats1
+ ()
+ in (Pat.List (Vector.fromList pats))
+end)
+ in ( LrTable.NT 4, ( result, LBRACKET1left, RBRACKET1right), rest671)
+
+end
+| ( 263, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( _, LBRACE1left, _))
+ :: rest671)) => let val result = MlyValue.apatnode (fn _ => (
+Pat.unit))
+ in ( LrTable.NT 4, ( result, LBRACE1left, RBRACE1right), rest671)
+end
+| ( 264, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.patitems
+patitems1, _, _)) :: ( _, ( _, LBRACE1left, _)) :: rest671)) => let
+ val result = MlyValue.apatnode (fn _ => let val (patitems as
+patitems1) = patitems1 ()
+ in (
+let
+ val (items, flexible) = patitems
+ in
+ Pat.Record {flexible = flexible,
+ items = Vector.fromList items}
+ end
+)
+end)
+ in ( LrTable.NT 4, ( result, LBRACE1left, RBRACE1right), rest671)
+end
+| ( 265, ( rest671)) => let val result = MlyValue.pats (fn _ => ([])
+)
+ in ( LrTable.NT 86, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 266, ( ( _, ( MlyValue.commapats commapats1, _, commapats1right))
+ :: ( _, ( MlyValue.pat pat1, pat1left, _)) :: rest671)) => let val
+result = MlyValue.pats (fn _ => let val (pat as pat1) = pat1 ()
+ val (commapats as commapats1) = commapats1 ()
+ in (pat :: commapats)
+end)
+ in ( LrTable.NT 86, ( result, pat1left, commapats1right), rest671)
+
+end
+| ( 267, ( rest671)) => let val result = MlyValue.commapats (fn _ =>
+ ([]))
+ in ( LrTable.NT 13, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 268, ( ( _, ( MlyValue.commapats commapats1, _, commapats1right))
+ :: ( _, ( MlyValue.pat pat1, _, _)) :: ( _, ( _, COMMA1left, _)) ::
+rest671)) => let val result = MlyValue.commapats (fn _ => let val (
+pat as pat1) = pat1 ()
+ val (commapats as commapats1) = commapats1 ()
+ in (pat :: commapats)
+end)
+ in ( LrTable.NT 13, ( result, COMMA1left, commapats1right), rest671)
+
+end
+| ( 269, ( ( _, ( MlyValue.patitems patitems1, _, patitems1right)) ::
+ _ :: ( _, ( MlyValue.patitem patitem1, patitem1left, _)) :: rest671))
+ => let val result = MlyValue.patitems (fn _ => let val (patitem as
+patitem1) = patitem1 ()
+ val (patitems as patitems1) = patitems1 ()
+ in (
+let val (items, f) = patitems
+ in (patitem :: items, f)
+ end
+)
+end)
+ in ( LrTable.NT 84, ( result, patitem1left, patitems1right), rest671)
+
+end
+| ( 270, ( ( _, ( MlyValue.patitem patitem1, patitem1left,
+patitem1right)) :: rest671)) => let val result = MlyValue.patitems
+ (fn _ => let val (patitem as patitem1) = patitem1 ()
+ in ([patitem], false)
+end)
+ in ( LrTable.NT 84, ( result, patitem1left, patitem1right), rest671)
+
+end
+| ( 271, ( ( _, ( _, DOTDOTDOT1left, DOTDOTDOT1right)) :: rest671))
+ => let val result = MlyValue.patitems (fn _ => ([], true))
+ in ( LrTable.NT 84, ( result, DOTDOTDOT1left, DOTDOTDOT1right),
+rest671)
+end
+| ( 272, ( ( _, ( MlyValue.pat pat1, _, pat1right)) :: _ :: ( _, (
+MlyValue.field field1, field1left, _)) :: rest671)) => let val result
+ = MlyValue.patitem (fn _ => let val (field as field1) = field1 ()
+ val (pat as pat1) = pat1 ()
+ in ((field, Pat.Item.Field pat))
+end)
+ in ( LrTable.NT 83, ( result, field1left, pat1right), rest671)
+end
+| ( 273, ( ( _, ( MlyValue.opaspat opaspat1, _, opaspat1right)) :: (
+ _, ( MlyValue.constraint constraint1, _, _)) :: ( _, (
+MlyValue.vidNoEqual vidNoEqual1, vidNoEqual1left, _)) :: rest671)) =>
+ let val result = MlyValue.patitem (fn _ => let val (vidNoEqual as
+vidNoEqual1) = vidNoEqual1 ()
+ val (constraint as constraint1) = constraint1 ()
+ val (opaspat as opaspat1) = opaspat1 ()
+ in (
+Field.Symbol (Vid.toSymbol vidNoEqual),
+ Pat.Item.Vid (vidNoEqual, constraint, opaspat)
+)
+end)
+ in ( LrTable.NT 83, ( result, vidNoEqual1left, opaspat1right),
+rest671)
+end
+| ( 274, ( rest671)) => let val result = MlyValue.opaspat (fn _ => (
+NONE))
+ in ( LrTable.NT 78, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 275, ( ( _, ( MlyValue.pat pat1, _, pat1right)) :: ( _, ( _,
+AS1left, _)) :: rest671)) => let val result = MlyValue.opaspat (fn _
+ => let val (pat as pat1) = pat1 ()
+ in (SOME pat)
+end)
+ in ( LrTable.NT 78, ( result, AS1left, pat1right), rest671)
+end
+| ( 276, ( ( _, ( MlyValue.tynode tynode1, (tynodeleft as tynode1left
+), (tynoderight as tynode1right))) :: rest671)) => let val result =
+MlyValue.ty (fn _ => let val (tynode as tynode1) = tynode1 ()
+ in (Type.makeRegion' (tynode, tynodeleft, tynoderight))
+end)
+ in ( LrTable.NT 137, ( result, tynode1left, tynode1right), rest671)
+
+end
+| ( 277, ( ( _, ( MlyValue.tuple_ty tuple_ty1, tuple_ty1left,
+tuple_ty1right)) :: rest671)) => let val result = MlyValue.tynode (fn
+ _ => let val (tuple_ty as tuple_ty1) = tuple_ty1 ()
+ in (Type.tuple (Vector.fromList tuple_ty))
+end)
+ in ( LrTable.NT 144, ( result, tuple_ty1left, tuple_ty1right),
+rest671)
+end
+| ( 278, ( ( _, ( MlyValue.ty ty2, _, ty2right)) :: _ :: ( _, (
+MlyValue.ty ty1, ty1left, _)) :: rest671)) => let val result =
+MlyValue.tynode (fn _ => let val ty1 = ty1 ()
+ val ty2 = ty2 ()
+ in (Type.arrow (ty1, ty2))
+end)
+ in ( LrTable.NT 144, ( result, ty1left, ty2right), rest671)
+end
+| ( 279, ( ( _, ( MlyValue.ty'node ty'node1, ty'node1left,
+ty'node1right)) :: rest671)) => let val result = MlyValue.tynode (fn
+ _ => let val (ty'node as ty'node1) = ty'node1 ()
+ in (ty'node)
+end)
+ in ( LrTable.NT 144, ( result, ty'node1left, ty'node1right), rest671)
+
+end
+| ( 280, ( ( _, ( MlyValue.ty'node ty'node1, (ty'nodeleft as
+ty'node1left), (ty'noderight as ty'node1right))) :: rest671)) => let
+ val result = MlyValue.ty' (fn _ => let val (ty'node as ty'node1) =
+ty'node1 ()
+ in (Type.makeRegion' (ty'node, ty'nodeleft, ty'noderight))
+end)
+ in ( LrTable.NT 138, ( result, ty'node1left, ty'node1right), rest671)
+
+end
+| ( 281, ( ( _, ( MlyValue.tyvar tyvar1, tyvar1left, tyvar1right)) ::
+ rest671)) => let val result = MlyValue.ty'node (fn _ => let val (
+tyvar as tyvar1) = tyvar1 ()
+ in (Type.Var tyvar)
+end)
+ in ( LrTable.NT 139, ( result, tyvar1left, tyvar1right), rest671)
+end
+| ( 282, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.tlabels
+tlabels1, _, _)) :: ( _, ( _, LBRACE1left, _)) :: rest671)) => let
+ val result = MlyValue.ty'node (fn _ => let val (tlabels as tlabels1
+) = tlabels1 ()
+ in (Type.Record (Srecord.fromVector (Vector.fromList tlabels)))
+end)
+ in ( LrTable.NT 139, ( result, LBRACE1left, RBRACE1right), rest671)
+
+end
+| ( 283, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( _, LBRACE1left, _))
+ :: rest671)) => let val result = MlyValue.ty'node (fn _ => (
+Type.unit))
+ in ( LrTable.NT 139, ( result, LBRACE1left, RBRACE1right), rest671)
+
+end
+| ( 284, ( ( _, ( MlyValue.longtycon longtycon1, _, longtycon1right))
+ :: _ :: ( _, ( MlyValue.ty0_pc ty0_pc1, _, _)) :: ( _, ( _,
+LPAREN1left, _)) :: rest671)) => let val result = MlyValue.ty'node
+ (fn _ => let val (ty0_pc as ty0_pc1) = ty0_pc1 ()
+ val (longtycon as longtycon1) = longtycon1 ()
+ in (
+Type.Con (longtycon,
+ Vector.fromList ty0_pc)
+)
+end)
+ in ( LrTable.NT 139, ( result, LPAREN1left, longtycon1right), rest671
+)
+end
+| ( 285, ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.ty ty1, _,
+ _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let val result =
+MlyValue.ty'node (fn _ => let val (ty as ty1) = ty1 ()
+ in (Type.node ty)
+end)
+ in ( LrTable.NT 139, ( result, LPAREN1left, RPAREN1right), rest671)
+
+end
+| ( 286, ( ( _, ( MlyValue.longtycon longtycon1, _, longtycon1right))
+ :: ( _, ( MlyValue.ty' ty'1, ty'1left, _)) :: rest671)) => let val
+result = MlyValue.ty'node (fn _ => let val (ty' as ty'1) = ty'1 ()
+ val (longtycon as longtycon1) = longtycon1 ()
+ in (
+Type.Con (longtycon,
+ Vector.new1 ty')
+)
+end)
+ in ( LrTable.NT 139, ( result, ty'1left, longtycon1right), rest671)
+
+end
+| ( 287, ( ( _, ( MlyValue.longtycon longtycon1, longtycon1left,
+longtycon1right)) :: rest671)) => let val result = MlyValue.ty'node
+ (fn _ => let val (longtycon as longtycon1) = longtycon1 ()
+ in (
+Type.Con (longtycon,
+ Vector.new0 ())
+)
+end)
+ in ( LrTable.NT 139, ( result, longtycon1left, longtycon1right),
+rest671)
+end
+| ( 288, ( ( _, ( MlyValue.ty ty1, _, ty1right)) :: _ :: ( _, (
+MlyValue.field field1, field1left, _)) :: rest671)) => let val result
+ = MlyValue.tlabel (fn _ => let val (field as field1) = field1 ()
+ val (ty as ty1) = ty1 ()
+ in (field, ty)
+end)
+ in ( LrTable.NT 131, ( result, field1left, ty1right), rest671)
+end
+| ( 289, ( ( _, ( MlyValue.tlabels tlabels1, _, tlabels1right)) :: _
+ :: ( _, ( MlyValue.tlabel tlabel1, tlabel1left, _)) :: rest671)) =>
+ let val result = MlyValue.tlabels (fn _ => let val (tlabel as
+tlabel1) = tlabel1 ()
+ val (tlabels as tlabels1) = tlabels1 ()
+ in (tlabel :: tlabels)
+end)
+ in ( LrTable.NT 132, ( result, tlabel1left, tlabels1right), rest671)
+
+end
+| ( 290, ( ( _, ( MlyValue.tlabel tlabel1, tlabel1left, tlabel1right)
+) :: rest671)) => let val result = MlyValue.tlabels (fn _ => let val
+ (tlabel as tlabel1) = tlabel1 ()
+ in ([tlabel])
+end)
+ in ( LrTable.NT 132, ( result, tlabel1left, tlabel1right), rest671)
+
+end
+| ( 291, ( ( _, ( MlyValue.tuple_ty tuple_ty1, _, tuple_ty1right)) ::
+ _ :: ( _, ( MlyValue.ty' ty'1, ty'1left, _)) :: rest671)) => let val
+ result = MlyValue.tuple_ty (fn _ => let val (ty' as ty'1) = ty'1 ()
+ val (tuple_ty as tuple_ty1) = tuple_ty1 ()
+ in (ty' :: tuple_ty)
+end)
+ in ( LrTable.NT 136, ( result, ty'1left, tuple_ty1right), rest671)
+
+end
+| ( 292, ( ( _, ( MlyValue.ty' ty'2, _, ty'2right)) :: _ :: ( _, (
+MlyValue.ty' ty'1, ty'1left, _)) :: rest671)) => let val result =
+MlyValue.tuple_ty (fn _ => let val ty'1 = ty'1 ()
+ val ty'2 = ty'2 ()
+ in ([ty'1, ty'2])
+end)
+ in ( LrTable.NT 136, ( result, ty'1left, ty'2right), rest671)
+end
+| ( 293, ( ( _, ( MlyValue.ty ty2, _, ty2right)) :: _ :: ( _, (
+MlyValue.ty ty1, ty1left, _)) :: rest671)) => let val result =
+MlyValue.ty0_pc (fn _ => let val ty1 = ty1 ()
+ val ty2 = ty2 ()
+ in ([ty1, ty2])
+end)
+ in ( LrTable.NT 140, ( result, ty1left, ty2right), rest671)
+end
+| ( 294, ( ( _, ( MlyValue.ty0_pc ty0_pc1, _, ty0_pc1right)) :: _ ::
+( _, ( MlyValue.ty ty1, ty1left, _)) :: rest671)) => let val result =
+ MlyValue.ty0_pc (fn _ => let val (ty as ty1) = ty1 ()
+ val (ty0_pc as ty0_pc1) = ty0_pc1 ()
+ in (ty :: ty0_pc)
+end)
+ in ( LrTable.NT 140, ( result, ty1left, ty0_pc1right), rest671)
+end
+| ( 295, ( ( _, ( MlyValue.const const1, const1left, const1right)) ::
+ rest671)) => let val result = MlyValue.constOrBool (fn _ => let val
+ (const as const1) = const1 ()
+ in (const)
+end)
+ in ( LrTable.NT 20, ( result, const1left, const1right), rest671)
+end
+| ( 296, ( ( _, ( MlyValue.id id1, (idleft as id1left), (idright as
+id1right))) :: rest671)) => let val result = MlyValue.constOrBool (fn
+ _ => let val (id as id1) = id1 ()
+ in (
+let
+ fun ok b = Const.makeRegion (Const.Bool b, reg (idleft, idright))
+ in
+ case Symbol.toString (#1 id) of
+ "false" => ok false
+ | "true" => ok true
+ | s => (error (#2 id, concat ["unknown boolean constant: ", s])
+ ; ok false)
+ end
+)
+end)
+ in ( LrTable.NT 20, ( result, id1left, id1right), rest671)
+end
+| ( 297, ( ( _, ( MlyValue.const' const'1, (const'left as const'1left
+), (const'right as const'1right))) :: rest671)) => let val result =
+MlyValue.const (fn _ => let val (const' as const'1) = const'1 ()
+ in (
+Const.makeRegion
+ (const', reg (const'left, const'right))
+)
+end)
+ in ( LrTable.NT 15, ( result, const'1left, const'1right), rest671)
+
+end
+| ( 298, ( ( _, ( MlyValue.int int1, int1left, int1right)) :: rest671
+)) => let val result = MlyValue.const' (fn _ => let val (int as int1
+) = int1 ()
+ in (Const.Int int)
+end)
+ in ( LrTable.NT 16, ( result, int1left, int1right), rest671)
+end
+| ( 299, ( ( _, ( MlyValue.word word1, word1left, word1right)) ::
+rest671)) => let val result = MlyValue.const' (fn _ => let val (word
+ as word1) = word1 ()
+ in (Const.Word word)
+end)
+ in ( LrTable.NT 16, ( result, word1left, word1right), rest671)
+end
+| ( 300, ( ( _, ( MlyValue.REAL REAL1, REAL1left, REAL1right)) ::
+rest671)) => let val result = MlyValue.const' (fn _ => let val (REAL
+ as REAL1) = REAL1 ()
+ in (Const.Real REAL)
+end)
+ in ( LrTable.NT 16, ( result, REAL1left, REAL1right), rest671)
+end
+| ( 301, ( ( _, ( MlyValue.STRING STRING1, STRING1left, STRING1right)
+) :: rest671)) => let val result = MlyValue.const' (fn _ => let val
+ (STRING as STRING1) = STRING1 ()
+ in (Const.String STRING)
+end)
+ in ( LrTable.NT 16, ( result, STRING1left, STRING1right), rest671)
+
+end
+| ( 302, ( ( _, ( MlyValue.CHAR CHAR1, CHAR1left, CHAR1right)) ::
+rest671)) => let val result = MlyValue.const' (fn _ => let val (CHAR
+ as CHAR1) = CHAR1 ()
+ in (Const.Char CHAR)
+end)
+ in ( LrTable.NT 16, ( result, CHAR1left, CHAR1right), rest671)
+end
+| ( 303, ( ( _, ( MlyValue.STRING STRING1, STRING1left, STRING1right)
+) :: rest671)) => let val result = MlyValue.string (fn _ => let val
+ (STRING as STRING1) = STRING1 ()
+ in (
+CharVector.tabulate
+ (Vector.length STRING, fn i =>
+ Char.fromInt (Int.fromIntInf (Vector.sub (STRING, i))))
+)
+end)
+ in ( LrTable.NT 129, ( result, STRING1left, STRING1right), rest671)
+
+end
+| ( 304, ( ( _, ( MlyValue.longidNoAsterisk longidNoAsterisk1,
+longidNoAsterisk1left, longidNoAsterisk1right)) :: rest671)) => let
+ val result = MlyValue.idNoAsterisk (fn _ => let val (
+longidNoAsterisk as longidNoAsterisk1) = longidNoAsterisk1 ()
+ in (ensureNonqualified longidNoAsterisk)
+end)
+ in ( LrTable.NT 62, ( result, longidNoAsterisk1left,
+longidNoAsterisk1right), rest671)
+end
+| ( 305, ( ( _, ( MlyValue.idNoAsterisk idNoAsterisk1,
+idNoAsterisk1left, idNoAsterisk1right)) :: rest671)) => let val
+result = MlyValue.id (fn _ => let val (idNoAsterisk as idNoAsterisk1)
+ = idNoAsterisk1 ()
+ in (idNoAsterisk)
+end)
+ in ( LrTable.NT 60, ( result, idNoAsterisk1left, idNoAsterisk1right),
+ rest671)
+end
+| ( 306, ( ( _, ( _, (ASTERISKleft as ASTERISK1left), (ASTERISKright
+ as ASTERISK1right))) :: rest671)) => let val result = MlyValue.id
+ (fn _ => ((Symbol.asterisk, reg (ASTERISKleft, ASTERISKright))))
+ in ( LrTable.NT 60, ( result, ASTERISK1left, ASTERISK1right), rest671
+)
+end
+| ( 307, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.idEqual (fn _ => let val (id as id1) =
+ id1 ()
+ in (id)
+end)
+ in ( LrTable.NT 61, ( result, id1left, id1right), rest671)
+end
+| ( 308, ( ( _, ( _, (EQUALOPleft as EQUALOP1left), (EQUALOPright as
+EQUALOP1right))) :: rest671)) => let val result = MlyValue.idEqual
+ (fn _ => ((Symbol.equal, reg (EQUALOPleft, EQUALOPright))))
+ in ( LrTable.NT 61, ( result, EQUALOP1left, EQUALOP1right), rest671)
+
+end
+| ( 309, ( ( _, ( MlyValue.longidNoAsterisk longidNoAsterisk1,
+longidNoAsterisk1left, longidNoAsterisk1right)) :: rest671)) => let
+ val result = MlyValue.longid (fn _ => let val (longidNoAsterisk as
+longidNoAsterisk1) = longidNoAsterisk1 ()
+ in (longidNoAsterisk)
+end)
+ in ( LrTable.NT 65, ( result, longidNoAsterisk1left,
+longidNoAsterisk1right), rest671)
+end
+| ( 310, ( ( _, ( _, (ASTERISKleft as ASTERISK1left), (ASTERISKright
+ as ASTERISK1right))) :: rest671)) => let val result =
+MlyValue.longid (fn _ => (
+([Symbol.asterisk], reg (ASTERISKleft, ASTERISKright))))
+ in ( LrTable.NT 65, ( result, ASTERISK1left, ASTERISK1right), rest671
+)
+end
+| ( 311, ( ( _, ( MlyValue.LONGID LONGID1, (LONGIDleft as LONGID1left
+), (LONGIDright as LONGID1right))) :: rest671)) => let val result =
+MlyValue.longidNoAsterisk (fn _ => let val (LONGID as LONGID1) =
+LONGID1 ()
+ in (
+let
+ val syms = List.map (String.split (LONGID, #"."), Symbol.fromString)
+ in
+ (syms, reg (LONGIDleft, LONGIDright))
+ end
+)
+end)
+ in ( LrTable.NT 67, ( result, LONGID1left, LONGID1right), rest671)
+
+end
+| ( 312, ( ( _, ( MlyValue.longid longid1, longid1left, longid1right)
+) :: rest671)) => let val result = MlyValue.longidEqual (fn _ => let
+ val (longid as longid1) = longid1 ()
+ in (longid)
+end)
+ in ( LrTable.NT 66, ( result, longid1left, longid1right), rest671)
+
+end
+| ( 313, ( ( _, ( _, (EQUALOPleft as EQUALOP1left), (EQUALOPright as
+EQUALOP1right))) :: rest671)) => let val result =
+MlyValue.longidEqual (fn _ => (
+([Symbol.equal], reg (EQUALOPleft, EQUALOPright))))
+ in ( LrTable.NT 66, ( result, EQUALOP1left, EQUALOP1right), rest671)
+
+end
+| ( 314, ( ( _, ( MlyValue.idEqual idEqual1, idEqual1left,
+idEqual1right)) :: rest671)) => let val result = MlyValue.vid (fn _
+ => let val (idEqual as idEqual1) = idEqual1 ()
+ in (Vid.fromSymbol idEqual)
+end)
+ in ( LrTable.NT 160, ( result, idEqual1left, idEqual1right), rest671)
+
+end
+| ( 315, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.vidNoEqual (fn _ => let val (id as id1
+) = id1 ()
+ in (Vid.fromSymbol id)
+end)
+ in ( LrTable.NT 161, ( result, id1left, id1right), rest671)
+end
+| ( 316, ( ( _, ( MlyValue.vid vid1, vid1left, vid1right)) :: rest671
+)) => let val result = MlyValue.vids (fn _ => let val (vid as vid1)
+ = vid1 ()
+ in ([vid])
+end)
+ in ( LrTable.NT 162, ( result, vid1left, vid1right), rest671)
+end
+| ( 317, ( ( _, ( MlyValue.vids vids1, _, vids1right)) :: ( _, (
+MlyValue.vid vid1, vid1left, _)) :: rest671)) => let val result =
+MlyValue.vids (fn _ => let val (vid as vid1) = vid1 ()
+ val (vids as vids1) = vids1 ()
+ in (vid::vids)
+end)
+ in ( LrTable.NT 162, ( result, vid1left, vids1right), rest671)
+end
+| ( 318, ( ( _, ( MlyValue.idEqual idEqual1, idEqual1left,
+idEqual1right)) :: rest671)) => let val result = MlyValue.var (fn _
+ => let val (idEqual as idEqual1) = idEqual1 ()
+ in (Var.fromSymbol idEqual)
+end)
+ in ( LrTable.NT 159, ( result, idEqual1left, idEqual1right), rest671)
+
+end
+| ( 319, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.con (fn _ => let val (id as id1) = id1
+ ()
+ in (Con.fromSymbol id)
+end)
+ in ( LrTable.NT 14, ( result, id1left, id1right), rest671)
+end
+| ( 320, ( ( _, ( MlyValue.idNoAsterisk idNoAsterisk1,
+idNoAsterisk1left, idNoAsterisk1right)) :: rest671)) => let val
+result = MlyValue.tycon (fn _ => let val (idNoAsterisk as
+idNoAsterisk1) = idNoAsterisk1 ()
+ in (Tycon.fromSymbol idNoAsterisk)
+end)
+ in ( LrTable.NT 143, ( result, idNoAsterisk1left, idNoAsterisk1right)
+, rest671)
+end
+| ( 321, ( ( _, ( MlyValue.TYVAR TYVAR1, (TYVARleft as TYVAR1left), (
+TYVARright as TYVAR1right))) :: rest671)) => let val result =
+MlyValue.tyvar (fn _ => let val (TYVAR as TYVAR1) = TYVAR1 ()
+ in (
+Tyvar.newString (TYVAR, {left = TYVARleft,
+ right = TYVARright})
+)
+end)
+ in ( LrTable.NT 150, ( result, TYVAR1left, TYVAR1right), rest671)
+end
+| ( 322, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.field (fn _ => let val (id as id1) =
+id1 ()
+ in (Field.Symbol (#1 id))
+end)
+ in ( LrTable.NT 52, ( result, id1left, id1right), rest671)
+end
+| ( 323, ( ( _, ( MlyValue.int int1, (intleft as int1left), (intright
+ as int1right))) :: rest671)) => let val result = MlyValue.field (fn
+ _ => let val (int as int1) = int1 ()
+ in (
+let
+ val int =
+ IntInf.toInt int
+ handle Exn.Overflow =>
+ (error (reg (intleft, intright),
+ "field too huge")
+ ; 0)
+ in
+ Field.Int
+ (if int <= 0
+ then (error (reg (intleft, intright),
+ "nonpositive field")
+ ; ~1)
+ else
+ int - 1)
+ end
+)
+end)
+ in ( LrTable.NT 52, ( result, int1left, int1right), rest671)
+end
+| ( 324, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.strid (fn _ => let val (id as id1) =
+id1 ()
+ in (Strid.fromSymbol id)
+end)
+ in ( LrTable.NT 128, ( result, id1left, id1right), rest671)
+end
+| ( 325, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.sigid (fn _ => let val (id as id1) =
+id1 ()
+ in (Sigid.fromSymbol id)
+end)
+ in ( LrTable.NT 106, ( result, id1left, id1right), rest671)
+end
+| ( 326, ( ( _, ( MlyValue.sigid sigid1, sigid1left, sigid1right)) ::
+ rest671)) => let val result = MlyValue.sigids (fn _ => let val (
+sigid as sigid1) = sigid1 ()
+ in ([sigid])
+end)
+ in ( LrTable.NT 107, ( result, sigid1left, sigid1right), rest671)
+end
+| ( 327, ( ( _, ( MlyValue.sigids sigids1, _, sigids1right)) :: ( _,
+( MlyValue.sigid sigid1, sigid1left, _)) :: rest671)) => let val
+result = MlyValue.sigids (fn _ => let val (sigid as sigid1) = sigid1
+ ()
+ val (sigids as sigids1) = sigids1 ()
+ in (sigid :: sigids)
+end)
+ in ( LrTable.NT 107, ( result, sigid1left, sigids1right), rest671)
+
+end
+| ( 328, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671))
+ => let val result = MlyValue.fctid (fn _ => let val (id as id1) =
+id1 ()
+ in (Fctid.fromSymbol id)
+end)
+ in ( LrTable.NT 51, ( result, id1left, id1right), rest671)
+end
+| ( 329, ( ( _, ( MlyValue.longidNoAsterisk longidNoAsterisk1,
+longidNoAsterisk1left, longidNoAsterisk1right)) :: rest671)) => let
+ val result = MlyValue.longtycon (fn _ => let val (longidNoAsterisk
+ as longidNoAsterisk1) = longidNoAsterisk1 ()
+ in (Longtycon.fromSymbols longidNoAsterisk)
+end)
+ in ( LrTable.NT 71, ( result, longidNoAsterisk1left,
+longidNoAsterisk1right), rest671)
+end
+| ( 330, ( ( _, ( MlyValue.longidEqual longidEqual1, longidEqual1left
+, longidEqual1right)) :: rest671)) => let val result =
+MlyValue.longvar (fn _ => let val (longidEqual as longidEqual1) =
+longidEqual1 ()
+ in (Longvar.fromSymbols longidEqual)
+end)
+ in ( LrTable.NT 73, ( result, longidEqual1left, longidEqual1right),
+rest671)
+end
+| ( 331, ( ( _, ( MlyValue.longidEqual longidEqual1, longidEqual1left
+, longidEqual1right)) :: rest671)) => let val result =
+MlyValue.longvid (fn _ => let val (longidEqual as longidEqual1) =
+longidEqual1 ()
+ in (Longvid.fromSymbols longidEqual)
+end)
+ in ( LrTable.NT 75, ( result, longidEqual1left, longidEqual1right),
+rest671)
+end
+| ( 332, ( ( _, ( MlyValue.longid longid1, longid1left, longid1right)
+) :: rest671)) => let val result = MlyValue.longvidNoEqual (fn _ =>
+ let val (longid as longid1) = longid1 ()
+ in (Longvid.fromSymbols longid)
+end)
+ in ( LrTable.NT 76, ( result, longid1left, longid1right), rest671)
+
+end
+| ( 333, ( ( _, ( MlyValue.longid longid1, longid1left, longid1right)
+) :: rest671)) => let val result = MlyValue.longcon (fn _ => let val
+ (longid as longid1) = longid1 ()
+ in (Longcon.fromSymbols longid)
+end)
+ in ( LrTable.NT 64, ( result, longid1left, longid1right), rest671)
+
+end
+| ( 334, ( ( _, ( MlyValue.longid longid1, longid1left, longid1right)
+) :: rest671)) => let val result = MlyValue.longstrid (fn _ => let
+ val (longid as longid1) = longid1 ()
+ in (Longstrid.fromSymbols longid)
+end)
+ in ( LrTable.NT 68, ( result, longid1left, longid1right), rest671)
+
+end
+| ( 335, ( ( _, ( MlyValue.longstrid longstrid1, longstrid1left,
+longstrid1right)) :: rest671)) => let val result =
+MlyValue.longstrids (fn _ => let val (longstrid as longstrid1) =
+longstrid1 ()
+ in ([longstrid])
+end)
+ in ( LrTable.NT 70, ( result, longstrid1left, longstrid1right),
+rest671)
+end
+| ( 336, ( ( _, ( MlyValue.longstrids longstrids1, _,
+longstrids1right)) :: ( _, ( MlyValue.longstrid longstrid1,
+longstrid1left, _)) :: rest671)) => let val result =
+MlyValue.longstrids (fn _ => let val (longstrid as longstrid1) =
+longstrid1 ()
+ val (longstrids as longstrids1) = longstrids1 ()
+ in (longstrid :: longstrids)
+end)
+ in ( LrTable.NT 70, ( result, longstrid1left, longstrids1right),
+rest671)
+end
+| _ => raise (mlyAction i392)
+end
+val void = MlyValue.VOID
+val extract = fn a => (fn MlyValue.program x => x
+| _ => let exception ParseInternal
+ in raise ParseInternal end) a ()
+end
+end
+structure Tokens : ML_TOKENS =
+struct
+type svalue = ParserData.svalue
+type ('a,'b) token = ('a,'b) Token.token
+fun CHAR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 0,(
+ParserData.MlyValue.CHAR (fn () => i),p1,p2))
+fun INT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 1,(
+ParserData.MlyValue.INT (fn () => i),p1,p2))
+fun LONGID (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 2,(
+ParserData.MlyValue.LONGID (fn () => i),p1,p2))
+fun REAL (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 3,(
+ParserData.MlyValue.REAL (fn () => i),p1,p2))
+fun STRING (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 4,(
+ParserData.MlyValue.STRING (fn () => i),p1,p2))
+fun TYVAR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 5,(
+ParserData.MlyValue.TYVAR (fn () => i),p1,p2))
+fun WORD (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 6,(
+ParserData.MlyValue.WORD (fn () => i),p1,p2))
+fun ABSTYPE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 7,(
+ParserData.MlyValue.VOID,p1,p2))
+fun AND (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ANDALSO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ARROW (p1,p2) = Token.TOKEN (ParserData.LrTable.T 10,(
+ParserData.MlyValue.VOID,p1,p2))
+fun AS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 11,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ASTERISK (p1,p2) = Token.TOKEN (ParserData.LrTable.T 12,(
+ParserData.MlyValue.VOID,p1,p2))
+fun BAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13,(
+ParserData.MlyValue.VOID,p1,p2))
+fun CASE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 14,(
+ParserData.MlyValue.VOID,p1,p2))
+fun COLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 15,(
+ParserData.MlyValue.VOID,p1,p2))
+fun COLONGT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 16,(
+ParserData.MlyValue.VOID,p1,p2))
+fun COMMA (p1,p2) = Token.TOKEN (ParserData.LrTable.T 17,(
+ParserData.MlyValue.VOID,p1,p2))
+fun DATATYPE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 18,(
+ParserData.MlyValue.VOID,p1,p2))
+fun DOTDOTDOT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 19,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ELSE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 20,(
+ParserData.MlyValue.VOID,p1,p2))
+fun END (p1,p2) = Token.TOKEN (ParserData.LrTable.T 21,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 22,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EQUALOP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 23,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EQTYPE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 24,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EXCEPTION (p1,p2) = Token.TOKEN (ParserData.LrTable.T 25,(
+ParserData.MlyValue.VOID,p1,p2))
+fun DO (p1,p2) = Token.TOKEN (ParserData.LrTable.T 26,(
+ParserData.MlyValue.VOID,p1,p2))
+fun DARROW (p1,p2) = Token.TOKEN (ParserData.LrTable.T 27,(
+ParserData.MlyValue.VOID,p1,p2))
+fun FN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 28,(
+ParserData.MlyValue.VOID,p1,p2))
+fun FUN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 29,(
+ParserData.MlyValue.VOID,p1,p2))
+fun FUNCTOR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 30,(
+ParserData.MlyValue.VOID,p1,p2))
+fun HANDLE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 31,(
+ParserData.MlyValue.VOID,p1,p2))
+fun HASH (p1,p2) = Token.TOKEN (ParserData.LrTable.T 32,(
+ParserData.MlyValue.VOID,p1,p2))
+fun IF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 33,(
+ParserData.MlyValue.VOID,p1,p2))
+fun IN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 34,(
+ParserData.MlyValue.VOID,p1,p2))
+fun INCLUDE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 35,(
+ParserData.MlyValue.VOID,p1,p2))
+fun INFIX (p1,p2) = Token.TOKEN (ParserData.LrTable.T 36,(
+ParserData.MlyValue.VOID,p1,p2))
+fun INFIXR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 37,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 38,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LBRACKET (p1,p2) = Token.TOKEN (ParserData.LrTable.T 39,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LET (p1,p2) = Token.TOKEN (ParserData.LrTable.T 40,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LOCAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 41,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 42,(
+ParserData.MlyValue.VOID,p1,p2))
+fun NONFIX (p1,p2) = Token.TOKEN (ParserData.LrTable.T 43,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ORELSE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 44,(
+ParserData.MlyValue.VOID,p1,p2))
+fun OF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 45,(
+ParserData.MlyValue.VOID,p1,p2))
+fun OP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 46,(
+ParserData.MlyValue.VOID,p1,p2))
+fun OPEN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 47,(
+ParserData.MlyValue.VOID,p1,p2))
+fun OVERLOAD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 48,(
+ParserData.MlyValue.VOID,p1,p2))
+fun RAISE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 49,(
+ParserData.MlyValue.VOID,p1,p2))
+fun RBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 50,(
+ParserData.MlyValue.VOID,p1,p2))
+fun RBRACKET (p1,p2) = Token.TOKEN (ParserData.LrTable.T 51,(
+ParserData.MlyValue.VOID,p1,p2))
+fun REC (p1,p2) = Token.TOKEN (ParserData.LrTable.T 52,(
+ParserData.MlyValue.VOID,p1,p2))
+fun RPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 53,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SEMICOLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 54,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SHARING (p1,p2) = Token.TOKEN (ParserData.LrTable.T 55,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SIG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 56,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SIGNATURE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 57,(
+ParserData.MlyValue.VOID,p1,p2))
+fun STRUCT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 58,(
+ParserData.MlyValue.VOID,p1,p2))
+fun STRUCTURE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 59,(
+ParserData.MlyValue.VOID,p1,p2))
+fun THEN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 60,(
+ParserData.MlyValue.VOID,p1,p2))
+fun TYPE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 61,(
+ParserData.MlyValue.VOID,p1,p2))
+fun VAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 62,(
+ParserData.MlyValue.VOID,p1,p2))
+fun WHERE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 63,(
+ParserData.MlyValue.VOID,p1,p2))
+fun WHILE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 64,(
+ParserData.MlyValue.VOID,p1,p2))
+fun WILD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 65,(
+ParserData.MlyValue.VOID,p1,p2))
+fun WITH (p1,p2) = Token.TOKEN (ParserData.LrTable.T 66,(
+ParserData.MlyValue.VOID,p1,p2))
+fun WITHTYPE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 67,(
+ParserData.MlyValue.VOID,p1,p2))
+fun BUILD_CONST (p1,p2) = Token.TOKEN (ParserData.LrTable.T 68,(
+ParserData.MlyValue.VOID,p1,p2))
+fun COMMAND_LINE_CONST (p1,p2) = Token.TOKEN (ParserData.LrTable.T 69
+,(ParserData.MlyValue.VOID,p1,p2))
+fun CONST (p1,p2) = Token.TOKEN (ParserData.LrTable.T 70,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ADDRESS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 71,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EXPORT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 72,(
+ParserData.MlyValue.VOID,p1,p2))
+fun IMPORT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 73,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SYMBOL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 74,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PRIM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 75,(
+ParserData.MlyValue.VOID,p1,p2))
+end
+end
diff --git a/lang/mlton/files/ml.lex.sml b/lang/mlton/files/ml.lex.sml
new file mode 100644
index 000000000000..0be061ef80b9
--- /dev/null
+++ b/lang/mlton/files/ml.lex.sml
@@ -0,0 +1,5660 @@
+type int = Int.int
+functor MLLexFun (structure Tokens : ML_TOKENS)=
+ struct
+ structure UserDeclarations =
+ struct
+(* Heavily modified from the SML/NJ sources by sweeks@sweeks.com. *)
+
+(* ml.lex
+ *
+ * Copyright 1989 by AT&T Bell Laboratories
+ *
+ * $Log: ml.lex,v $
+ * Revision 1.3 1997/05/22 20:17:22 jhr
+ * Changed lexer to accept "1e1" style floating-point literals.
+ *
+ * Revision 1.2 1997/01/28 23:20:40 jhr
+ * Integer and word literals are now represented by IntInf.int (instead of
+ * as strings).
+ *
+ *)
+
+type int = Int.t
+
+type svalue = Tokens.svalue
+type pos = SourcePos.t
+type lexresult = (svalue, pos) Tokens.token
+type lexarg = {source: Source.t}
+type arg = lexarg
+type ('a,'b) token = ('a,'b) Tokens.token
+
+val charlist: IntInf.t list ref = ref []
+val colNum: int ref = ref 0
+val commentLevel: int ref = ref 0
+val commentStart = ref SourcePos.bogus
+val lineFile: File.t ref = ref ""
+val lineNum: int ref = ref 0
+val stringStart = ref SourcePos.bogus
+val stringtype = ref false
+
+fun lineDirective (source, file, yypos) =
+ Source.lineDirective (source, file,
+ {lineNum = !lineNum,
+ lineStart = yypos - !colNum})
+
+fun addString (s: string) =
+ charlist :=
+ String.fold (s, !charlist, fn (c, ac) => Int.toIntInf (Char.ord c) :: ac)
+
+fun addChar (c: char) = addString (String.fromChar c)
+
+fun inc (ri as ref (i: int)) = ri := i + 1
+
+fun dec (ri as ref (i: int)) = ri := i - 1
+
+fun error (source, left, right, msg) =
+ Control.errorStr (Region.make {left = Source.getPos (source, left),
+ right = Source.getPos (source, right)},
+ msg)
+
+fun stringError (source, right, msg) =
+ Control.errorStr (Region.make {left = !stringStart,
+ right = Source.getPos (source, right)},
+ msg)
+
+fun addOrd (i: IntInf.t): unit = List.push (charlist, i)
+
+fun addHexEscape (s: string, source, yypos): unit =
+ case StringCvt.scanString (Pervasive.IntInf.scan StringCvt.HEX) s of
+ NONE => stringError (source, yypos, "illegal unicode escape")
+ | SOME i => addOrd i
+
+val eof: lexarg -> lexresult =
+ fn {source, ...} =>
+ let
+ val pos = Source.lineStart source
+ val _ =
+ if !commentLevel > 0
+ then Control.errorStr (Region.make {left = !commentStart,
+ right = pos},
+ "unclosed comment")
+ else ()
+ in
+ Tokens.EOF (pos, pos)
+ end
+
+val size = String.size
+
+fun tok (t, s, l, r) =
+ let
+ val l = Source.getPos (s, l)
+ val r = Source.getPos (s, r)
+ val _ =
+ if true
+ then ()
+ else
+ print (concat ["tok (",
+ SourcePos.toString l,
+ ", " ,
+ SourcePos.toString r,
+ ")\n"])
+ in
+ t (l, r)
+ end
+
+fun tok' (t, x, s, l) = tok (fn (l, r) => t (x, l, r), s, l, l + size x)
+
+fun int (yytext, drop, source, yypos, {negate: bool}, radix) =
+ Tokens.INT ({digits = String.dropPrefix (yytext, drop),
+ negate = negate,
+ radix = radix},
+ Source.getPos (source, yypos),
+ Source.getPos (source, yypos + size yytext))
+
+fun word (yytext, drop, source, yypos, radix) =
+ Tokens.WORD ({digits = String.dropPrefix (yytext, drop),
+ radix = radix},
+ Source.getPos (source, yypos),
+ Source.getPos (source, yypos + size yytext))
+
+
+end (* end of user routines *)
+exception LexError (* raised if illegal leaf action tried *)
+structure Internal =
+ struct
+
+datatype yyfinstate = N of int
+type statedata = {fin : yyfinstate list, trans: int Vector.vector}
+(* transition & final state table *)
+val tab = let
+fun decode s k =
+ let val k' = k + k
+ val hi = Char.ord(String.sub(s, k'))
+ val lo = Char.ord(String.sub(s, k' + 1))
+ in hi * 256 + lo end
+val s = [
+ (0,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (1,129,
+"\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\
+\\000\017\001\041\001\044\000\017\001\041\001\043\000\017\000\017\
+\\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\
+\\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\017\
+\\001\041\000\190\001\040\001\038\000\190\000\190\000\190\001\036\
+\\001\028\001\027\000\190\000\190\001\026\001\024\001\021\000\190\
+\\001\014\001\012\001\012\001\012\001\012\001\012\001\012\001\012\
+\\001\012\001\012\001\010\001\009\000\190\001\007\000\190\000\190\
+\\000\190\000\038\000\038\000\038\000\038\000\038\000\038\000\038\
+\\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\
+\\000\038\000\038\000\038\000\038\000\038\000\038\000\038\000\038\
+\\000\038\000\038\000\038\001\006\000\190\001\005\000\190\000\191\
+\\000\190\000\176\000\038\000\172\000\163\000\144\000\136\000\038\
+\\000\130\000\118\000\038\000\038\000\111\000\038\000\105\000\095\
+\\000\038\000\038\000\088\000\065\000\058\000\038\000\055\000\040\
+\\000\038\000\038\000\038\000\037\000\036\000\035\000\018\000\017\
+\\000\017"
+),
+ (3,129,
+"\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\050\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\048\001\045\001\046\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045\001\045\001\045\001\045\001\045\001\045\001\045\001\045\
+\\001\045"
+),
+ (5,129,
+"\001\051\001\051\001\051\001\051\001\051\001\051\001\051\001\051\
+\\001\051\001\051\001\088\001\051\001\051\001\087\001\051\001\051\
+\\001\051\001\051\001\051\001\051\001\051\001\051\001\051\001\051\
+\\001\051\001\051\001\051\001\051\001\051\001\051\001\051\001\051\
+\\001\052\001\052\001\086\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\053\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\052\
+\\001\052\001\052\001\052\001\052\001\052\001\052\001\052\001\051\
+\\001\051"
+),
+ (7,129,
+"\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\091\001\094\001\089\001\091\001\093\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\091\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\090\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089\001\089\001\089\001\089\001\089\001\089\001\089\001\089\
+\\001\089"
+),
+ (9,129,
+"\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\000\000\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\098\001\095\001\095\001\095\001\095\001\095\
+\\001\096\001\096\001\096\001\096\001\096\001\096\001\096\001\096\
+\\001\096\001\096\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095"
+),
+ (11,129,
+"\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\000\000\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\103\001\100\
+\\001\101\001\101\001\101\001\101\001\101\001\101\001\101\001\101\
+\\001\101\001\101\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100\001\100\001\100\001\100\001\100\001\100\001\100\001\100\
+\\001\100"
+),
+ (13,129,
+"\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\107\000\000\001\095\001\107\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\107\001\095\001\106\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\104\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095\001\095\001\095\001\095\001\095\001\095\001\095\001\095\
+\\001\095"
+),
+ (15,129,
+"\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\111\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\114\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\112\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110\001\110\001\110\001\110\001\110\001\110\001\110\001\110\
+\\001\110"
+),
+ (18,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\019\000\000\000\019\000\019\000\019\000\019\000\000\
+\\000\000\000\000\000\019\000\019\000\000\000\019\000\020\000\019\
+\\000\032\000\023\000\023\000\023\000\023\000\023\000\023\000\023\
+\\000\023\000\023\000\019\000\000\000\019\000\019\000\019\000\019\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\000"
+),
+ (19,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\019\000\000\000\019\000\019\000\019\000\019\000\000\
+\\000\000\000\000\000\019\000\019\000\000\000\019\000\020\000\019\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\019\000\000\000\019\000\019\000\019\000\019\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\000"
+),
+ (20,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\021\000\000\000\021\000\021\000\021\000\021\000\000\
+\\000\000\000\000\000\021\000\021\000\000\000\021\000\000\000\021\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\021\000\000\000\021\000\021\000\021\000\021\
+\\000\021\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\000\000\021\000\000\000\021\000\000\
+\\000\021\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\000\000\021\000\000\000\021\000\000\
+\\000\000"
+),
+ (21,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\021\000\000\000\021\000\021\000\021\000\021\000\000\
+\\000\000\000\000\000\021\000\021\000\000\000\021\000\020\000\021\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\021\000\000\000\021\000\021\000\021\000\021\
+\\000\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\021\000\000\000\021\000\000\
+\\000\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\021\000\000\000\021\000\000\
+\\000\000"
+),
+ (22,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\000\000\000\000\000\000\000\000\022\
+\\000\000\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\
+\\000\022\000\022\000\022\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (23,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\027\000\000\
+\\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\
+\\000\023\000\023\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (24,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\
+\\000\026\000\026\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\025\000\000\
+\\000\000"
+),
+ (25,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\
+\\000\026\000\026\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (27,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\
+\\000\028\000\028\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (28,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\
+\\000\028\000\028\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\029\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\029\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (29,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\
+\\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\030\000\000\
+\\000\000"
+),
+ (30,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\
+\\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (32,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\027\000\000\
+\\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\
+\\000\023\000\023\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\033\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (33,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\
+\\000\034\000\034\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\034\000\034\000\034\000\034\000\034\000\034\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\034\000\034\000\034\000\034\000\034\000\034\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (38,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (40,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\048\000\041\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (41,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\042\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (42,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\043\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (43,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\044\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (44,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\045\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (45,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\046\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (46,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\047\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (48,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\052\000\039\000\039\
+\\000\039\000\049\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (49,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\050\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (50,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\051\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (52,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\053\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (53,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\054\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (55,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\056\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (56,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\057\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (58,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\062\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\059\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (59,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\060\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (60,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\061\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (62,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\063\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (63,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\064\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (65,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\082\000\074\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\066\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (66,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\067\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (67,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\068\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (68,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\069\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (69,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\070\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (70,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\071\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (71,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\072\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (72,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\073\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (74,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\075\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (75,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\076\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (76,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\077\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (77,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\078\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (78,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\079\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (79,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\080\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (80,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\081\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (82,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\083\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (83,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\084\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (84,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\085\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (85,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\086\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (86,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\087\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (88,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\091\000\039\000\039\000\039\000\089\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (89,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\090\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (91,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\092\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (92,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\093\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (93,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\094\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (95,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\104\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\101\000\039\000\096\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (96,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\097\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (97,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\098\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (98,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\099\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (99,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\100\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (101,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\102\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (102,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\103\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (105,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\106\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (106,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\107\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (107,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\108\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (108,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\109\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (109,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\110\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (111,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\116\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\112\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (112,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\113\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (113,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\114\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (114,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\115\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (116,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\117\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (118,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\129\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\119\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (119,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\124\000\039\000\039\000\120\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (120,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\121\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (121,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\122\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (122,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\123\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (124,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\125\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (125,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\126\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (126,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\127\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (127,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\128\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (130,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\131\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (131,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\132\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (132,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\133\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (133,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\134\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (134,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\135\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (136,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\143\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\137\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (137,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\138\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (138,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\139\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (139,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\140\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (140,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\141\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (141,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\142\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (144,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\160\000\039\000\158\000\039\
+\\000\039\000\153\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\145\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (145,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\146\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (146,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\147\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (147,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\148\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (148,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\149\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (149,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\150\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (150,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\151\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (151,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\152\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (153,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\154\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (154,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\155\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (155,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\156\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (156,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\157\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (158,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\159\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (160,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\161\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (161,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\162\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (163,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\165\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\164\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (165,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\166\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (166,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\167\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (167,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\168\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (168,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\169\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (169,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\170\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (170,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\171\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (172,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\173\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (173,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\174\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (174,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\175\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (176,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\184\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\178\000\039\
+\\000\039\000\039\000\039\000\177\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (178,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\179\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (179,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\180\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (180,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\181\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (181,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\182\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (182,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\183\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (184,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\185\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (185,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\186\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (186,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\187\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (187,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\188\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (188,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\039\
+\\000\000\000\039\000\039\000\039\000\039\000\189\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\
+\\000\039\000\039\000\039\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (191,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\254\000\243\000\222\000\000\000\216\000\000\000\000\
+\\000\000\000\210\000\000\000\000\000\000\000\000\000\000\000\202\
+\\000\198\000\000\000\000\000\192\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (192,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\193\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (193,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\194\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (194,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\195\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (195,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (196,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\197\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (198,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\199\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (199,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (200,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\201\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (202,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\203\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (203,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\204\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (204,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\205\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (205,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (206,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\207\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (207,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\208\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (208,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (210,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\211\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (211,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (212,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (213,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\214\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (214,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\215\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (216,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (217,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (218,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\219\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (219,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\220\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (220,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (222,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\223\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (223,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\227\000\224\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (224,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\225\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (225,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\226\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (227,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\228\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (228,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\229\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (229,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\230\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (230,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\231\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (231,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\232\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (232,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\233\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (233,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\234\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (234,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\235\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (235,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\236\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (236,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\237\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (237,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\238\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (238,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\239\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (239,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\240\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (240,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (241,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (243,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\244\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (244,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\245\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (245,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\246\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (246,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\247\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (247,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (248,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\249\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (249,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\250\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (250,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\251\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (251,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\252\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (252,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\253\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (254,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\255\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (255,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (256,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\001\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (257,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\001\002\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (258,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\001\003\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (259,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\001\004\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (263,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\019\000\000\000\019\000\019\000\019\000\019\000\000\
+\\000\000\000\000\000\019\000\019\000\000\000\019\000\020\000\019\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\019\000\000\000\019\000\019\001\008\000\019\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\000"
+),
+ (266,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\019\000\000\000\019\000\019\000\019\000\019\000\000\
+\\000\000\000\000\000\019\000\019\000\000\000\019\000\020\000\019\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\019\000\000\000\019\000\019\001\011\000\019\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\000"
+),
+ (268,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\027\000\000\
+\\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\
+\\001\013\001\013\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (270,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\027\000\000\
+\\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\
+\\001\013\001\013\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\
+\\001\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (271,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\
+\\001\016\001\016\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\016\001\016\001\016\001\016\001\016\001\016\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\016\001\016\001\016\001\016\001\016\001\016\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (273,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\020\001\020\001\020\001\020\001\020\001\020\001\020\001\020\
+\\001\020\001\020\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (274,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\019\001\019\001\019\001\019\001\019\001\019\001\019\001\019\
+\\001\019\001\019\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\019\001\019\001\019\001\019\001\019\001\019\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\019\001\019\001\019\001\019\001\019\001\019\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (276,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\020\001\020\001\020\001\020\001\020\001\020\001\020\001\020\
+\\001\020\001\020\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (277,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\001\022\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (278,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\001\023\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (280,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\019\000\000\000\019\000\019\000\019\000\019\000\000\
+\\000\000\000\000\000\019\000\019\000\000\000\019\000\020\000\019\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\019\000\000\000\019\000\019\001\025\000\019\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\000"
+),
+ (284,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (285,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\001\030\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (286,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\001\031\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (287,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\032\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (288,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\001\033\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (289,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\001\034\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (290,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\035\000\000\000\000\001\035\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (292,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\037\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\037\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\001\037\000\000\000\000\000\000\000\000\001\037\
+\\000\000\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\001\037\001\037\001\037\001\037\001\037\001\037\
+\\001\037\001\037\001\037\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (294,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\019\001\039\000\019\000\019\000\019\000\019\000\000\
+\\000\000\000\000\000\019\000\019\000\000\000\019\000\020\000\019\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\019\000\000\000\019\000\019\000\019\000\019\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\019\000\000\000\019\000\000\
+\\000\000"
+),
+ (297,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\042\000\000\000\000\001\042\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\042\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (299,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\044\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (302,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\047\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (304,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\049\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (309,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\083\001\085\000\000\001\083\001\084\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\083\000\000\001\082\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\079\001\079\001\079\001\079\001\079\001\079\001\079\001\079\
+\\001\079\001\079\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\001\070\000\000\000\000\
+\\000\000\000\000\000\000\000\000\001\069\000\000\001\066\000\000\
+\\000\000\001\065\001\064\000\000\000\000\000\000\001\063\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\001\062\000\000\
+\\000\000\000\000\001\061\000\000\001\060\001\055\001\054\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (311,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\056\001\056\001\056\001\056\001\056\001\056\001\056\001\056\
+\\001\056\001\056\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\056\001\056\001\056\001\056\001\056\001\056\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\056\001\056\001\056\001\056\001\056\001\056\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (312,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\057\001\057\001\057\001\057\001\057\001\057\001\057\001\057\
+\\001\057\001\057\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\057\001\057\001\057\001\057\001\057\001\057\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\057\001\057\001\057\001\057\001\057\001\057\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (313,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\058\001\058\001\058\001\058\001\058\001\058\001\058\001\058\
+\\001\058\001\058\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\058\001\058\001\058\001\058\001\058\001\058\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\058\001\058\001\058\001\058\001\058\001\058\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (314,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\059\001\059\001\059\001\059\001\059\001\059\001\059\001\059\
+\\001\059\001\059\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\059\001\059\001\059\001\059\001\059\001\059\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\059\001\059\001\059\001\059\001\059\001\059\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (322,129,
+"\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\000\000\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\068\001\068\001\068\001\068\001\068\001\068\001\068\001\068\
+\\001\068\001\068\001\068\001\068\001\068\001\068\001\068\001\068\
+\\001\068\001\068\001\068\001\068\001\068\001\068\001\068\001\068\
+\\001\068\001\068\001\068\001\068\001\068\001\068\001\068\001\068\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067\001\067\001\067\001\067\001\067\001\067\001\067\001\067\
+\\001\067"
+),
+ (326,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\071\001\071\001\071\001\071\001\071\001\071\001\071\001\071\
+\\001\071\001\071\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\071\001\071\001\071\001\071\001\071\001\071\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\071\001\071\001\071\001\071\001\071\001\071\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (327,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\072\001\072\001\072\001\072\001\072\001\072\001\072\001\072\
+\\001\072\001\072\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\072\001\072\001\072\001\072\001\072\001\072\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\072\001\072\001\072\001\072\001\072\001\072\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (328,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\073\001\073\001\073\001\073\001\073\001\073\001\073\001\073\
+\\001\073\001\073\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\073\001\073\001\073\001\073\001\073\001\073\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\073\001\073\001\073\001\073\001\073\001\073\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (329,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\074\001\074\001\074\001\074\001\074\001\074\001\074\001\074\
+\\001\074\001\074\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\074\001\074\001\074\001\074\001\074\001\074\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\074\001\074\001\074\001\074\001\074\001\074\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (330,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\075\001\075\001\075\001\075\001\075\001\075\001\075\001\075\
+\\001\075\001\075\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\075\001\075\001\075\001\075\001\075\001\075\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\075\001\075\001\075\001\075\001\075\001\075\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (331,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\076\001\076\001\076\001\076\001\076\001\076\001\076\001\076\
+\\001\076\001\076\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\076\001\076\001\076\001\076\001\076\001\076\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\076\001\076\001\076\001\076\001\076\001\076\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (332,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\077\001\077\001\077\001\077\001\077\001\077\001\077\001\077\
+\\001\077\001\077\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\077\001\077\001\077\001\077\001\077\001\077\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\077\001\077\001\077\001\077\001\077\001\077\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (333,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\078\001\078\001\078\001\078\001\078\001\078\001\078\001\078\
+\\001\078\001\078\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\078\001\078\001\078\001\078\001\078\001\078\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\078\001\078\001\078\001\078\001\078\001\078\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (335,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\080\001\080\001\080\001\080\001\080\001\080\001\080\001\080\
+\\001\080\001\080\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (336,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\081\001\081\001\081\001\081\001\081\001\081\001\081\001\081\
+\\001\081\001\081\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (339,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\083\000\000\000\000\001\083\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\083\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (340,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\085\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (343,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\088\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (347,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\092\000\000\000\000\001\092\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\092\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (349,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\094\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (352,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\097\001\097\001\097\001\097\001\097\001\097\001\097\001\097\
+\\001\097\001\097\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (354,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\099\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (357,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\102\001\102\001\102\001\102\001\102\001\102\001\102\001\102\
+\\001\102\001\102\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (360,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\105\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (363,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\109\000\000\000\000\001\109\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\001\109\000\000\001\108\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (366,129,
+"\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\000\000\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111"
+),
+ (368,129,
+"\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\000\000\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\113\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111\001\111\001\111\001\111\001\111\001\111\001\111\001\111\
+\\001\111"
+),
+ (370,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\001\115\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+ (371,129,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\001\116\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000"
+),
+(0, 0, "")]
+fun f(n, i, x) = (n, Vector.tabulate(i, decode x))
+val s = map f (rev (tl (rev s)))
+exception LexHackingError
+fun look ((j,x)::r, i) = if i = j then x else look(r, i)
+ | look ([], i) = raise LexHackingError
+fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)}
+in Vector.fromList(map g
+[{fin = [], trans = 0},
+{fin = [(N 2)], trans = 1},
+{fin = [(N 2)], trans = 1},
+{fin = [], trans = 3},
+{fin = [], trans = 3},
+{fin = [], trans = 5},
+{fin = [], trans = 5},
+{fin = [(N 592)], trans = 7},
+{fin = [(N 592)], trans = 7},
+{fin = [], trans = 9},
+{fin = [], trans = 9},
+{fin = [], trans = 11},
+{fin = [], trans = 11},
+{fin = [], trans = 13},
+{fin = [], trans = 13},
+{fin = [(N 481)], trans = 15},
+{fin = [(N 481)], trans = 15},
+{fin = [(N 462)], trans = 0},
+{fin = [(N 391),(N 462)], trans = 18},
+{fin = [(N 391)], trans = 19},
+{fin = [], trans = 20},
+{fin = [(N 391)], trans = 21},
+{fin = [(N 391)], trans = 22},
+{fin = [(N 418)], trans = 23},
+{fin = [], trans = 24},
+{fin = [], trans = 25},
+{fin = [(N 411)], trans = 25},
+{fin = [], trans = 27},
+{fin = [(N 411)], trans = 28},
+{fin = [], trans = 29},
+{fin = [], trans = 30},
+{fin = [(N 411)], trans = 30},
+{fin = [(N 418)], trans = 32},
+{fin = [], trans = 33},
+{fin = [(N 429)], trans = 33},
+{fin = [(N 104),(N 462)], trans = 0},
+{fin = [(N 120),(N 391),(N 462)], trans = 19},
+{fin = [(N 102),(N 462)], trans = 0},
+{fin = [(N 391),(N 462)], trans = 38},
+{fin = [(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 40},
+{fin = [(N 391)], trans = 41},
+{fin = [(N 391)], trans = 42},
+{fin = [(N 350),(N 391)], trans = 43},
+{fin = [(N 391)], trans = 44},
+{fin = [(N 391)], trans = 45},
+{fin = [(N 391)], trans = 46},
+{fin = [(N 359),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 48},
+{fin = [(N 391)], trans = 49},
+{fin = [(N 391)], trans = 50},
+{fin = [(N 345),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 52},
+{fin = [(N 391)], trans = 53},
+{fin = [(N 339),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 55},
+{fin = [(N 391)], trans = 56},
+{fin = [(N 333),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 58},
+{fin = [(N 391)], trans = 59},
+{fin = [(N 391)], trans = 60},
+{fin = [(N 329),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 62},
+{fin = [(N 391)], trans = 63},
+{fin = [(N 324),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 65},
+{fin = [(N 391)], trans = 66},
+{fin = [(N 391)], trans = 67},
+{fin = [(N 391)], trans = 68},
+{fin = [(N 391)], trans = 69},
+{fin = [(N 309),(N 391)], trans = 70},
+{fin = [(N 391)], trans = 71},
+{fin = [(N 391)], trans = 72},
+{fin = [(N 319),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 74},
+{fin = [(N 292),(N 391)], trans = 75},
+{fin = [(N 391)], trans = 76},
+{fin = [(N 391)], trans = 77},
+{fin = [(N 391)], trans = 78},
+{fin = [(N 391)], trans = 79},
+{fin = [(N 391)], trans = 80},
+{fin = [(N 302),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 82},
+{fin = [(N 391)], trans = 83},
+{fin = [(N 391)], trans = 84},
+{fin = [(N 391)], trans = 85},
+{fin = [(N 391)], trans = 86},
+{fin = [(N 288),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 88},
+{fin = [(N 391)], trans = 89},
+{fin = [(N 280),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 91},
+{fin = [(N 391)], trans = 92},
+{fin = [(N 391)], trans = 93},
+{fin = [(N 276),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 95},
+{fin = [(N 391)], trans = 96},
+{fin = [(N 391)], trans = 97},
+{fin = [(N 391)], trans = 98},
+{fin = [(N 391)], trans = 99},
+{fin = [(N 366),(N 391)], trans = 38},
+{fin = [(N 265),(N 391)], trans = 101},
+{fin = [(N 391)], trans = 102},
+{fin = [(N 270),(N 391)], trans = 38},
+{fin = [(N 262),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 105},
+{fin = [(N 391)], trans = 106},
+{fin = [(N 391)], trans = 107},
+{fin = [(N 391)], trans = 108},
+{fin = [(N 391)], trans = 109},
+{fin = [(N 259),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 111},
+{fin = [(N 391)], trans = 112},
+{fin = [(N 391)], trans = 113},
+{fin = [(N 391)], trans = 114},
+{fin = [(N 252),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 116},
+{fin = [(N 246),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 118},
+{fin = [(N 221),(N 391)], trans = 119},
+{fin = [(N 391)], trans = 120},
+{fin = [(N 391)], trans = 121},
+{fin = [(N 235),(N 391)], trans = 122},
+{fin = [(N 242),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 124},
+{fin = [(N 391)], trans = 125},
+{fin = [(N 391)], trans = 126},
+{fin = [(N 391)], trans = 127},
+{fin = [(N 229),(N 391)], trans = 38},
+{fin = [(N 218),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 130},
+{fin = [(N 391)], trans = 131},
+{fin = [(N 391)], trans = 132},
+{fin = [(N 391)], trans = 133},
+{fin = [(N 391)], trans = 134},
+{fin = [(N 215),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 136},
+{fin = [(N 391)], trans = 137},
+{fin = [(N 200),(N 391)], trans = 138},
+{fin = [(N 391)], trans = 139},
+{fin = [(N 391)], trans = 140},
+{fin = [(N 391)], trans = 141},
+{fin = [(N 208),(N 391)], trans = 38},
+{fin = [(N 196),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 144},
+{fin = [(N 391)], trans = 145},
+{fin = [(N 391)], trans = 146},
+{fin = [(N 391)], trans = 147},
+{fin = [(N 391)], trans = 148},
+{fin = [(N 391)], trans = 149},
+{fin = [(N 391)], trans = 150},
+{fin = [(N 391)], trans = 151},
+{fin = [(N 190),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 153},
+{fin = [(N 391)], trans = 154},
+{fin = [(N 391)], trans = 155},
+{fin = [(N 391)], trans = 156},
+{fin = [(N 180),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 158},
+{fin = [(N 173),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 160},
+{fin = [(N 391)], trans = 161},
+{fin = [(N 169),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 163},
+{fin = [(N 193),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 165},
+{fin = [(N 391)], trans = 166},
+{fin = [(N 391)], trans = 167},
+{fin = [(N 391)], trans = 168},
+{fin = [(N 391)], trans = 169},
+{fin = [(N 391)], trans = 170},
+{fin = [(N 164),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 172},
+{fin = [(N 391)], trans = 173},
+{fin = [(N 391)], trans = 174},
+{fin = [(N 155),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 176},
+{fin = [(N 150),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 178},
+{fin = [(N 139),(N 391)], trans = 179},
+{fin = [(N 391)], trans = 180},
+{fin = [(N 391)], trans = 181},
+{fin = [(N 391)], trans = 182},
+{fin = [(N 374),(N 391)], trans = 38},
+{fin = [(N 391)], trans = 184},
+{fin = [(N 391)], trans = 185},
+{fin = [(N 391)], trans = 186},
+{fin = [(N 391)], trans = 187},
+{fin = [(N 391)], trans = 188},
+{fin = [(N 147),(N 391)], trans = 38},
+{fin = [(N 391),(N 462)], trans = 19},
+{fin = [(N 98),(N 462)], trans = 191},
+{fin = [], trans = 192},
+{fin = [], trans = 193},
+{fin = [], trans = 194},
+{fin = [], trans = 195},
+{fin = [], trans = 196},
+{fin = [(N 90)], trans = 0},
+{fin = [], trans = 198},
+{fin = [], trans = 199},
+{fin = [], trans = 200},
+{fin = [(N 96)], trans = 0},
+{fin = [], trans = 202},
+{fin = [], trans = 203},
+{fin = [], trans = 204},
+{fin = [], trans = 205},
+{fin = [], trans = 206},
+{fin = [], trans = 207},
+{fin = [], trans = 208},
+{fin = [(N 82)], trans = 0},
+{fin = [], trans = 210},
+{fin = [], trans = 211},
+{fin = [], trans = 212},
+{fin = [], trans = 213},
+{fin = [], trans = 214},
+{fin = [(N 72)], trans = 0},
+{fin = [], trans = 216},
+{fin = [], trans = 217},
+{fin = [], trans = 218},
+{fin = [], trans = 219},
+{fin = [], trans = 220},
+{fin = [(N 64)], trans = 0},
+{fin = [], trans = 222},
+{fin = [], trans = 223},
+{fin = [], trans = 224},
+{fin = [], trans = 225},
+{fin = [(N 56)], trans = 0},
+{fin = [], trans = 227},
+{fin = [], trans = 228},
+{fin = [], trans = 229},
+{fin = [], trans = 230},
+{fin = [], trans = 231},
+{fin = [], trans = 232},
+{fin = [], trans = 233},
+{fin = [], trans = 234},
+{fin = [], trans = 235},
+{fin = [], trans = 236},
+{fin = [], trans = 237},
+{fin = [], trans = 238},
+{fin = [], trans = 239},
+{fin = [], trans = 240},
+{fin = [], trans = 241},
+{fin = [(N 49)], trans = 0},
+{fin = [], trans = 243},
+{fin = [], trans = 244},
+{fin = [], trans = 245},
+{fin = [], trans = 246},
+{fin = [], trans = 247},
+{fin = [], trans = 248},
+{fin = [], trans = 249},
+{fin = [], trans = 250},
+{fin = [], trans = 251},
+{fin = [], trans = 252},
+{fin = [(N 29)], trans = 0},
+{fin = [], trans = 254},
+{fin = [], trans = 255},
+{fin = [], trans = 256},
+{fin = [], trans = 257},
+{fin = [], trans = 258},
+{fin = [], trans = 259},
+{fin = [(N 16)], trans = 0},
+{fin = [(N 108),(N 462)], trans = 0},
+{fin = [(N 106),(N 462)], trans = 0},
+{fin = [(N 127),(N 391),(N 462)], trans = 263},
+{fin = [(N 135),(N 391)], trans = 19},
+{fin = [(N 110),(N 462)], trans = 0},
+{fin = [(N 122),(N 391),(N 462)], trans = 266},
+{fin = [(N 125),(N 391)], trans = 19},
+{fin = [(N 414),(N 462)], trans = 268},
+{fin = [(N 414)], trans = 268},
+{fin = [(N 414),(N 462)], trans = 270},
+{fin = [], trans = 271},
+{fin = [(N 423)], trans = 271},
+{fin = [], trans = 273},
+{fin = [], trans = 274},
+{fin = [(N 440)], trans = 274},
+{fin = [(N 434)], trans = 276},
+{fin = [(N 462)], trans = 277},
+{fin = [], trans = 278},
+{fin = [(N 118)], trans = 0},
+{fin = [(N 391),(N 462)], trans = 280},
+{fin = [(N 132),(N 391)], trans = 19},
+{fin = [(N 100),(N 462)], trans = 0},
+{fin = [(N 114),(N 462)], trans = 0},
+{fin = [(N 112),(N 462)], trans = 284},
+{fin = [(N 460)], trans = 285},
+{fin = [], trans = 286},
+{fin = [], trans = 287},
+{fin = [], trans = 288},
+{fin = [], trans = 289},
+{fin = [], trans = 290},
+{fin = [(N 457)], trans = 290},
+{fin = [(N 377),(N 462)], trans = 292},
+{fin = [(N 377)], trans = 292},
+{fin = [(N 129),(N 391),(N 462)], trans = 294},
+{fin = [(N 445)], trans = 0},
+{fin = [(N 442),(N 462)], trans = 0},
+{fin = [(N 2),(N 462)], trans = 297},
+{fin = [(N 2)], trans = 297},
+{fin = [(N 7),(N 462)], trans = 299},
+{fin = [(N 7)], trans = 0},
+{fin = [(N 500)], trans = 0},
+{fin = [(N 500)], trans = 302},
+{fin = [(N 498)], trans = 0},
+{fin = [(N 500)], trans = 304},
+{fin = [(N 493)], trans = 0},
+{fin = [(N 495)], trans = 0},
+{fin = [(N 584)], trans = 0},
+{fin = [(N 582),(N 584)], trans = 0},
+{fin = [(N 574),(N 582),(N 584)], trans = 309},
+{fin = [(N 523)], trans = 0},
+{fin = [], trans = 311},
+{fin = [], trans = 312},
+{fin = [], trans = 313},
+{fin = [], trans = 314},
+{fin = [(N 543)], trans = 0},
+{fin = [(N 520)], trans = 0},
+{fin = [(N 517)], trans = 0},
+{fin = [(N 514)], trans = 0},
+{fin = [(N 511)], trans = 0},
+{fin = [(N 508)], trans = 0},
+{fin = [(N 505)], trans = 0},
+{fin = [], trans = 322},
+{fin = [(N 531)], trans = 0},
+{fin = [(N 527),(N 531)], trans = 0},
+{fin = [(N 560)], trans = 0},
+{fin = [], trans = 326},
+{fin = [], trans = 327},
+{fin = [], trans = 328},
+{fin = [], trans = 329},
+{fin = [], trans = 330},
+{fin = [], trans = 331},
+{fin = [], trans = 332},
+{fin = [], trans = 333},
+{fin = [(N 554)], trans = 0},
+{fin = [], trans = 335},
+{fin = [], trans = 336},
+{fin = [(N 536)], trans = 0},
+{fin = [(N 557)], trans = 0},
+{fin = [(N 566)], trans = 339},
+{fin = [(N 572)], trans = 340},
+{fin = [(N 572)], trans = 0},
+{fin = [(N 502),(N 582),(N 584)], trans = 0},
+{fin = [(N 579),(N 584)], trans = 343},
+{fin = [(N 579)], trans = 0},
+{fin = [(N 596)], trans = 0},
+{fin = [(N 594),(N 596)], trans = 0},
+{fin = [(N 592),(N 596)], trans = 347},
+{fin = [(N 592)], trans = 347},
+{fin = [(N 589),(N 596)], trans = 349},
+{fin = [(N 589)], trans = 0},
+{fin = [(N 490)], trans = 0},
+{fin = [(N 465),(N 490)], trans = 352},
+{fin = [(N 465)], trans = 352},
+{fin = [(N 490)], trans = 354},
+{fin = [(N 488)], trans = 0},
+{fin = [(N 472)], trans = 0},
+{fin = [(N 470),(N 472)], trans = 357},
+{fin = [(N 470)], trans = 357},
+{fin = [(N 467),(N 472)], trans = 0},
+{fin = [(N 490)], trans = 360},
+{fin = [(N 475),(N 488)], trans = 0},
+{fin = [(N 479),(N 490)], trans = 0},
+{fin = [(N 490)], trans = 363},
+{fin = [(N 479)], trans = 0},
+{fin = [], trans = 363},
+{fin = [(N 481),(N 490)], trans = 366},
+{fin = [(N 481)], trans = 366},
+{fin = [(N 481),(N 490)], trans = 368},
+{fin = [(N 481),(N 488)], trans = 366},
+{fin = [(N 490)], trans = 370},
+{fin = [], trans = 371},
+{fin = [(N 485)], trans = 0}])
+end
+structure StartStates =
+ struct
+ datatype yystartstate = STARTSTATE of int
+
+(* start state definitions *)
+
+val A = STARTSTATE 3;
+val F = STARTSTATE 7;
+val INITIAL = STARTSTATE 1;
+val L = STARTSTATE 9;
+val LL = STARTSTATE 11;
+val LLC = STARTSTATE 13;
+val LLCQ = STARTSTATE 15;
+val S = STARTSTATE 5;
+
+end
+type result = UserDeclarations.lexresult
+ exception LexerError (* raised if illegal leaf action tried *)
+end
+
+type int = Int.int
+fun makeLexer (yyinput: int -> string) =
+let val yygone0:int= ~1
+ val yyb = ref "\n" (* buffer *)
+ val yybl: int ref = ref 1 (*buffer length *)
+ val yybufpos: int ref = ref 1 (* location of next character to use *)
+ val yygone: int ref = ref yygone0 (* position in file of beginning of buffer *)
+ val yydone = ref false (* eof found yet? *)
+ val yybegin: int ref = ref 1 (*Current 'start state' for lexer *)
+
+ val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
+ yybegin := x
+
+fun lex (yyarg as ({source})) =
+let fun continue() : Internal.result =
+ let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0: int) =
+ let fun action (i: int,nil) = raise LexError
+ | action (i,nil::l) = action (i-1,l)
+ | action (i,(node::acts)::l) =
+ case node of
+ Internal.N yyk =>
+ (let fun yymktext() = String.substring(!yyb,i0,i-i0)
+ val yypos: int = i0+ !yygone
+ fun REJECT() = action(i,acts::l)
+ open UserDeclarations Internal.StartStates
+ in (yybufpos := i; case yyk of
+
+ (* Application actions *)
+
+ 100 => (tok (Tokens.COMMA, source, yypos, yypos + 1))
+| 102 => (tok (Tokens.LBRACE, source, yypos, yypos + 1))
+| 104 => (tok (Tokens.RBRACE, source, yypos, yypos + 1))
+| 106 => (tok (Tokens.LBRACKET, source, yypos, yypos + 1))
+| 108 => (tok (Tokens.RBRACKET, source, yypos, yypos + 1))
+| 110 => (tok (Tokens.SEMICOLON, source, yypos, yypos + 1))
+| 112 => (tok (Tokens.LPAREN, source, yypos, yypos + 1))
+| 114 => (tok (Tokens.RPAREN, source, yypos, yypos + 1))
+| 118 => (tok (Tokens.DOTDOTDOT, source, yypos, yypos + 3))
+| 120 => (tok (Tokens.BAR, source, yypos, yypos + 1))
+| 122 => (tok (Tokens.COLON, source, yypos, yypos + 1))
+| 125 => (tok (Tokens.COLONGT, source, yypos, yypos + 1))
+| 127 => (tok (Tokens.EQUALOP, source, yypos, yypos + 1))
+| 129 => (tok (Tokens.HASH, source, yypos, yypos + 1))
+| 132 => (tok (Tokens.ARROW, source, yypos, yypos + 2))
+| 135 => (tok (Tokens.DARROW, source, yypos, yypos + 2))
+| 139 => (tok (Tokens.AND, source, yypos, yypos + 3))
+| 147 => (tok (Tokens.ABSTYPE, source, yypos, yypos + 7))
+| 150 => (tok (Tokens.AS, source, yypos, yypos + 2))
+| 155 => (tok (Tokens.CASE, source, yypos, yypos + 4))
+| 16 => let val yytext=yymktext() in tok (Tokens.ADDRESS, source, yypos, yypos + size yytext) end
+| 164 => (tok (Tokens.DATATYPE, source, yypos, yypos + 8))
+| 169 => (tok (Tokens.ELSE, source, yypos, yypos + 4))
+| 173 => (tok (Tokens.END, source, yypos, yypos + 3))
+| 180 => (tok (Tokens.EQTYPE, source, yypos, yypos + 6))
+| 190 => (tok (Tokens.EXCEPTION, source, yypos, yypos + 9))
+| 193 => (tok (Tokens.DO, source, yypos, yypos + 2))
+| 196 => (tok (Tokens.FN, source, yypos, yypos + 2))
+| 2 => (continue ())
+| 200 => (tok (Tokens.FUN, source, yypos, yypos + 3))
+| 208 => (tok (Tokens.FUNCTOR, source, yypos, yypos + 7))
+| 215 => (tok (Tokens.HANDLE, source, yypos, yypos + 6))
+| 218 => (tok (Tokens.IF, source, yypos, yypos + 2))
+| 221 => (tok (Tokens.IN, source, yypos, yypos + 2))
+| 229 => (tok (Tokens.INCLUDE, source, yypos, yypos + 7))
+| 235 => (tok (Tokens.INFIX, source, yypos, yypos + 5))
+| 242 => (tok (Tokens.INFIXR, source, yypos, yypos + 6))
+| 246 => (tok (Tokens.LET, source, yypos, yypos + 3))
+| 252 => (tok (Tokens.LOCAL, source, yypos, yypos + 5))
+| 259 => (tok (Tokens.NONFIX, source, yypos, yypos + 6))
+| 262 => (tok (Tokens.OF, source, yypos, yypos + 2))
+| 265 => (tok (Tokens.OP, source, yypos, yypos + 2))
+| 270 => (tok (Tokens.OPEN, source, yypos, yypos + 4))
+| 276 => (tok (Tokens.RAISE, source, yypos, yypos + 5))
+| 280 => (tok (Tokens.REC, source, yypos, yypos + 3))
+| 288 => (tok (Tokens.SHARING, source, yypos, yypos + 7))
+| 29 => let val yytext=yymktext() in tok (Tokens.BUILD_CONST, source, yypos, yypos + size yytext) end
+| 292 => (tok (Tokens.SIG, source, yypos, yypos + 3))
+| 302 => (tok (Tokens.SIGNATURE, source, yypos, yypos + 9))
+| 309 => (tok (Tokens.STRUCT, source, yypos, yypos + 6))
+| 319 => (tok (Tokens.STRUCTURE, source, yypos, yypos + 9))
+| 324 => (tok (Tokens.THEN, source, yypos, yypos + 4))
+| 329 => (tok (Tokens.TYPE, source, yypos, yypos + 4))
+| 333 => (tok (Tokens.VAL, source, yypos, yypos + 3))
+| 339 => (tok (Tokens.WHERE, source, yypos, yypos + 5))
+| 345 => (tok (Tokens.WHILE, source, yypos, yypos + 5))
+| 350 => (tok (Tokens.WITH, source, yypos, yypos + 4))
+| 359 => (tok (Tokens.WITHTYPE, source, yypos, yypos + 8))
+| 366 => (tok (Tokens.ORELSE, source, yypos, yypos + 6))
+| 374 => (tok (Tokens.ANDALSO, source, yypos, yypos + 7))
+| 377 => let val yytext=yymktext() in tok' (Tokens.TYVAR, yytext, source, yypos) end
+| 391 => let val yytext=yymktext() in case yytext of
+ "*" => tok (Tokens.ASTERISK, source, yypos, yypos + 1)
+ | _ => tok' (Tokens.LONGID, yytext, source, yypos) end
+| 411 => let val yytext=yymktext() in tok' (Tokens.REAL, yytext, source, yypos) end
+| 414 => let val yytext=yymktext() in int (yytext, 0, source, yypos, {negate = false}, StringCvt.DEC) end
+| 418 => let val yytext=yymktext() in int (yytext, 1, source, yypos, {negate = true}, StringCvt.DEC) end
+| 423 => let val yytext=yymktext() in int (yytext, 2, source, yypos, {negate = false}, StringCvt.HEX) end
+| 429 => let val yytext=yymktext() in int (yytext, 3, source, yypos, {negate = true}, StringCvt.HEX) end
+| 434 => let val yytext=yymktext() in word (yytext, 2, source, yypos, StringCvt.DEC) end
+| 440 => let val yytext=yymktext() in word (yytext, 3, source, yypos, StringCvt.HEX) end
+| 442 => (charlist := []
+ ; stringStart := Source.getPos (source, yypos)
+ ; stringtype := true
+ ; YYBEGIN S
+ ; continue ())
+| 445 => (charlist := []
+ ; stringStart := Source.getPos (source, yypos)
+ ; stringtype := false
+ ; YYBEGIN S
+ ; continue ())
+| 457 => (YYBEGIN L
+ ; commentStart := Source.getPos (source, yypos)
+ ; commentLevel := 1
+ ; continue ())
+| 460 => (YYBEGIN A
+ ; commentLevel := 1
+ ; commentStart := Source.getPos (source, yypos)
+ ; continue ())
+| 462 => (error (source, yypos, yypos + 1, "illegal token") ;
+ continue ())
+| 465 => let val yytext=yymktext() in YYBEGIN LL
+ ; (lineNum := valOf (Int.fromString yytext)
+ ; colNum := 1)
+ handle Overflow => YYBEGIN A
+ ; continue () end
+| 467 => ((* cheat: take n > 0 dots *) continue ())
+| 470 => let val yytext=yymktext() in YYBEGIN LLC
+ ; (colNum := valOf (Int.fromString yytext))
+ handle Overflow => YYBEGIN A
+ ; continue () end
+| 472 => (YYBEGIN LLC; continue ()
+ (* note hack, since ml-lex chokes on the empty string for 0* *))
+| 475 => (YYBEGIN INITIAL
+ ; lineDirective (source, NONE, yypos + 2)
+ ; commentLevel := 0; charlist := []; continue ())
+| 479 => (YYBEGIN LLCQ; continue ())
+| 481 => let val yytext=yymktext() in lineFile := yytext; continue () end
+| 485 => (YYBEGIN INITIAL
+ ; lineDirective (source, SOME (!lineFile), yypos + 3)
+ ; commentLevel := 0; charlist := []; continue ())
+| 488 => (YYBEGIN INITIAL; commentLevel := 0; charlist := []; continue ())
+| 49 => let val yytext=yymktext() in tok (Tokens.COMMAND_LINE_CONST, source, yypos, yypos + size yytext) end
+| 490 => (YYBEGIN A; continue ())
+| 493 => (inc commentLevel; continue ())
+| 495 => (Source.newline (source, yypos) ; continue ())
+| 498 => (dec commentLevel
+ ; if 0 = !commentLevel then YYBEGIN INITIAL else ()
+ ; continue ())
+| 500 => (continue ())
+| 502 => (let
+ val s = Vector.fromListRev (!charlist)
+ val _ = charlist := nil
+ fun make (t, v) =
+ t (v, !stringStart, Source.getPos (source, yypos + 1))
+ val () = YYBEGIN INITIAL
+ in
+ if !stringtype
+ then make (Tokens.STRING, s)
+ else
+ make (Tokens.CHAR,
+ if 1 <> Vector.length s
+ then (error
+ (source, yypos, yypos + 1,
+ "character constant not length 1")
+ ; 0)
+ else Vector.sub (s, 0))
+ end)
+| 505 => (addChar #"\a"; continue ())
+| 508 => (addChar #"\b"; continue ())
+| 511 => (addChar #"\f"; continue ())
+| 514 => (addChar #"\n"; continue ())
+| 517 => (addChar #"\r"; continue ())
+| 520 => (addChar #"\t"; continue ())
+| 523 => (addChar #"\v"; continue ())
+| 527 => let val yytext=yymktext() in addChar (Char.chr(Char.ord(String.sub(yytext, 2))
+ -Char.ord #"@"));
+ continue () end
+| 531 => (error (source, yypos, yypos + 2,
+ "illegal control escape; must be one of @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_");
+ continue ())
+| 536 => let val yytext=yymktext() in let
+ fun c (i, scale) =
+ scale * (Char.ord (String.sub (yytext, i))
+ - Char.ord #"0")
+ val () = addOrd (IntInf.fromInt
+ (c (1, 100) + c (2, 10) + c (3, 1)))
+ in
+ continue ()
+ end end
+| 543 => let val yytext=yymktext() in addHexEscape (String.substring (yytext, 2, 4),
+ source, yypos)
+ ; continue () end
+| 554 => let val yytext=yymktext() in addHexEscape (String.substring (yytext, 2, 8),
+ source, yypos)
+ ; continue () end
+| 557 => (addString "\""; continue ())
+| 56 => let val yytext=yymktext() in tok (Tokens.CONST, source, yypos, yypos + size yytext) end
+| 560 => (addString "\\"; continue ())
+| 566 => (YYBEGIN F; continue ())
+| 572 => (Source.newline (source, yypos + 1) ; YYBEGIN F ; continue ())
+| 574 => (stringError (source, yypos, "illegal string escape")
+ ; continue ())
+| 579 => (Source.newline (source, yypos)
+ ; stringError (source, yypos, "unclosed string")
+ ; continue ())
+| 582 => let val yytext=yymktext() in addString yytext; continue () end
+| 584 => (stringError (source, yypos + 1, "illegal character in string")
+ ; continue ())
+| 589 => (Source.newline (source, yypos) ; continue ())
+| 592 => (continue ())
+| 594 => (YYBEGIN S
+ ; stringStart := Source.getPos (source, yypos)
+ ; continue ())
+| 596 => (stringError (source, yypos, "unclosed string")
+ ; continue ())
+| 64 => let val yytext=yymktext() in tok (Tokens.EXPORT, source, yypos, yypos + size yytext) end
+| 7 => (Source.newline (source, yypos); continue ())
+| 72 => let val yytext=yymktext() in tok (Tokens.IMPORT, source, yypos, yypos + size yytext) end
+| 82 => let val yytext=yymktext() in tok (Tokens.OVERLOAD, source, yypos, yypos + size yytext) end
+| 90 => let val yytext=yymktext() in tok (Tokens.SYMBOL, source, yypos, yypos + size yytext) end
+| 96 => let val yytext=yymktext() in tok (Tokens.PRIM, source, yypos, yypos + size yytext) end
+| 98 => (tok (Tokens.WILD, source, yypos, yypos + 1))
+| _ => raise Internal.LexerError
+
+ ) end )
+
+ val {fin,trans} = Vector.sub (Internal.tab, s)
+ val NewAcceptingLeaves = fin::AcceptingLeaves
+ in if l = !yybl then
+ if trans = #trans(Vector.sub(Internal.tab,0))
+ then action(l,NewAcceptingLeaves
+) else let val newchars= if !yydone then "" else yyinput 1024
+ in if (String.size newchars)=0
+ then (yydone := true;
+ if (l=i0) then UserDeclarations.eof yyarg
+ else action(l,NewAcceptingLeaves))
+ else (if i0=l then yyb := newchars
+ else yyb := String.substring(!yyb,i0,l-i0)^newchars;
+ yygone := !yygone+i0;
+ yybl := String.size (!yyb);
+ scan (s,AcceptingLeaves,l-i0,0))
+ end
+ else let val NewChar = Char.ord (CharVector.sub (!yyb,l))
+ val NewChar = if NewChar<128 then NewChar else 128
+ val NewState = Vector.sub (trans, NewChar)
+ in if NewState=0 then action(l,NewAcceptingLeaves)
+ else scan(NewState,NewAcceptingLeaves,l+1,i0)
+ end
+ end
+(*
+ val start= if String.substring(!yyb,!yybufpos-1,1)="\n"
+then !yybegin+1 else !yybegin
+*)
+ in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
+ end
+in continue end
+ in lex
+ end
+end
diff --git a/lang/mlton/files/mlb.grm.sig b/lang/mlton/files/mlb.grm.sig
new file mode 100644
index 000000000000..66ca84bf9b98
--- /dev/null
+++ b/lang/mlton/files/mlb.grm.sig
@@ -0,0 +1,32 @@
+signature MLB_TOKENS =
+sig
+type ('a,'b) token
+type svalue
+val STRING: (string) * 'a * 'a -> (svalue,'a) token
+val FILE: (string) * 'a * 'a -> (svalue,'a) token
+val PRIM: 'a * 'a -> (svalue,'a) token
+val ANN: 'a * 'a -> (svalue,'a) token
+val STRUCTURE: 'a * 'a -> (svalue,'a) token
+val SIGNATURE: 'a * 'a -> (svalue,'a) token
+val OPEN: 'a * 'a -> (svalue,'a) token
+val LOCAL: 'a * 'a -> (svalue,'a) token
+val LET: 'a * 'a -> (svalue,'a) token
+val IN: 'a * 'a -> (svalue,'a) token
+val FUNCTOR: 'a * 'a -> (svalue,'a) token
+val EQUALOP: 'a * 'a -> (svalue,'a) token
+val END: 'a * 'a -> (svalue,'a) token
+val BASIS: 'a * 'a -> (svalue,'a) token
+val BAS: 'a * 'a -> (svalue,'a) token
+val AND: 'a * 'a -> (svalue,'a) token
+val EOF: 'a * 'a -> (svalue,'a) token
+val SEMICOLON: 'a * 'a -> (svalue,'a) token
+val COMMA: 'a * 'a -> (svalue,'a) token
+val ID: (string) * 'a * 'a -> (svalue,'a) token
+end
+signature MLB_LRVALS=
+sig
+structure Tokens : MLB_TOKENS
+structure ParserData:PARSER_DATA
+sharing type ParserData.Token.token = Tokens.token
+sharing type ParserData.svalue = Tokens.svalue
+end
diff --git a/lang/mlton/files/mlb.grm.sml b/lang/mlton/files/mlb.grm.sml
new file mode 100644
index 000000000000..91a580aa635d
--- /dev/null
+++ b/lang/mlton/files/mlb.grm.sml
@@ -0,0 +1,894 @@
+
+functor MLBLrValsFun (structure Token: TOKEN
+ structure Ast: AST
+ val lexAndParseProgOrMLB: File.t * Region.t ->
+ Ast.Basdec.node) =
+struct
+structure ParserData=
+struct
+structure Header =
+struct
+(* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
+ * Jagannathan, and Stephen Weeks.
+ * Copyright (C) 1997-2000 NEC Research Institute.
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+type int = Int.t
+
+fun reg (left, right) = Region.make {left = left, right = right}
+fun error (reg, msg) = Control.error (reg, Layout.str msg, Layout.empty)
+
+open Ast
+
+type fctbinds = {lhs: Fctid.t, rhs: Fctid.t} list
+type sigbinds = {lhs: Sigid.t, rhs: Sigid.t} list
+type strbinds = {lhs: Strid.t, rhs: Strid.t} list
+
+type basbinds = {name: Basid.t, def: Basexp.t} list
+
+
+end
+structure LrTable = Token.LrTable
+structure Token = Token
+local open LrTable in
+val table=let val actionRows =
+"\
+\\001\000\001\000\025\000\000\000\
+\\001\000\001\000\025\000\006\000\070\000\012\000\069\000\000\000\
+\\001\000\004\000\000\000\000\000\
+\\001\000\008\000\071\000\000\000\
+\\001\000\008\000\074\000\000\000\
+\\001\000\008\000\082\000\000\000\
+\\001\000\008\000\084\000\000\000\
+\\001\000\009\000\053\000\000\000\
+\\001\000\011\000\039\000\000\000\
+\\001\000\011\000\049\000\000\000\
+\\001\000\011\000\081\000\000\000\
+\\001\000\020\000\021\000\000\000\
+\\086\000\000\000\
+\\087\000\000\000\
+\\088\000\003\000\017\000\007\000\016\000\010\000\015\000\013\000\014\000\
+\\014\000\013\000\015\000\012\000\016\000\011\000\017\000\010\000\
+\\018\000\009\000\019\000\008\000\020\000\007\000\000\000\
+\\089\000\000\000\
+\\090\000\000\000\
+\\091\000\000\000\
+\\092\000\000\000\
+\\093\000\000\000\
+\\094\000\000\000\
+\\095\000\000\000\
+\\096\000\000\000\
+\\097\000\000\000\
+\\098\000\000\000\
+\\099\000\000\000\
+\\100\000\000\000\
+\\101\000\000\000\
+\\102\000\000\000\
+\\103\000\000\000\
+\\104\000\000\000\
+\\105\000\005\000\052\000\000\000\
+\\105\000\005\000\052\000\009\000\051\000\000\000\
+\\106\000\000\000\
+\\107\000\000\000\
+\\108\000\000\000\
+\\109\000\000\000\
+\\110\000\005\000\047\000\000\000\
+\\110\000\005\000\047\000\009\000\046\000\000\000\
+\\111\000\000\000\
+\\112\000\000\000\
+\\113\000\000\000\
+\\114\000\000\000\
+\\115\000\005\000\044\000\000\000\
+\\115\000\005\000\044\000\009\000\043\000\000\000\
+\\116\000\000\000\
+\\117\000\000\000\
+\\118\000\000\000\
+\\119\000\005\000\077\000\000\000\
+\\120\000\000\000\
+\\121\000\000\000\
+\\122\000\000\000\
+\\123\000\000\000\
+\\124\000\000\000\
+\\125\000\000\000\
+\\126\000\001\000\025\000\000\000\
+\\127\000\000\000\
+\\128\000\000\000\
+\\129\000\000\000\
+\\130\000\000\000\
+\\131\000\000\000\
+\\132\000\000\000\
+\\133\000\000\000\
+\\134\000\020\000\021\000\000\000\
+\\135\000\000\000\
+\"
+val actionRowNumbers =
+"\014\000\013\000\012\000\017\000\
+\\014\000\025\000\024\000\026\000\
+\\011\000\000\000\000\000\000\000\
+\\014\000\000\000\000\000\014\000\
+\\016\000\008\000\063\000\061\000\
+\\044\000\020\000\059\000\060\000\
+\\038\000\019\000\058\000\054\000\
+\\023\000\055\000\009\000\057\000\
+\\032\000\018\000\007\000\021\000\
+\\015\000\014\000\062\000\064\000\
+\\041\000\000\000\000\000\035\000\
+\\000\000\000\000\056\000\014\000\
+\\029\000\000\000\000\000\001\000\
+\\003\000\043\000\040\000\045\000\
+\\037\000\034\000\039\000\004\000\
+\\031\000\028\000\033\000\052\000\
+\\050\000\048\000\046\000\014\000\
+\\014\000\027\000\042\000\036\000\
+\\022\000\030\000\047\000\000\000\
+\\010\000\005\000\049\000\001\000\
+\\051\000\006\000\053\000\002\000"
+val gotoT =
+"\
+\\007\000\004\000\008\000\003\000\009\000\002\000\010\000\001\000\
+\\020\000\083\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\007\000\004\000\008\000\003\000\009\000\016\000\010\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\001\000\018\000\002\000\017\000\000\000\
+\\019\000\022\000\025\000\021\000\028\000\020\000\000\000\
+\\019\000\026\000\021\000\025\000\024\000\024\000\000\000\
+\\013\000\029\000\014\000\028\000\019\000\027\000\000\000\
+\\007\000\004\000\008\000\003\000\009\000\030\000\010\000\001\000\000\000\
+\\015\000\033\000\018\000\032\000\019\000\031\000\000\000\
+\\004\000\035\000\013\000\034\000\019\000\027\000\000\000\
+\\007\000\004\000\008\000\003\000\009\000\036\000\010\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\001\000\018\000\002\000\039\000\003\000\038\000\000\000\
+\\000\000\
+\\027\000\040\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\023\000\043\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\013\000\029\000\014\000\046\000\019\000\027\000\000\000\
+\\000\000\
+\\000\000\
+\\017\000\048\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\007\000\004\000\008\000\003\000\009\000\052\000\010\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\019\000\022\000\026\000\054\000\028\000\053\000\000\000\
+\\019\000\022\000\025\000\055\000\028\000\020\000\000\000\
+\\000\000\
+\\019\000\026\000\022\000\057\000\024\000\056\000\000\000\
+\\019\000\026\000\021\000\058\000\024\000\024\000\000\000\
+\\000\000\
+\\007\000\004\000\008\000\003\000\009\000\059\000\010\000\001\000\000\000\
+\\000\000\
+\\016\000\061\000\018\000\060\000\019\000\031\000\000\000\
+\\015\000\062\000\018\000\032\000\019\000\031\000\000\000\
+\\005\000\066\000\011\000\065\000\012\000\064\000\013\000\063\000\
+\\019\000\027\000\000\000\
+\\000\000\
+\\027\000\070\000\000\000\
+\\000\000\
+\\000\000\
+\\023\000\071\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\017\000\073\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\006\000\074\000\000\000\
+\\000\000\
+\\007\000\004\000\008\000\003\000\009\000\076\000\010\000\001\000\000\000\
+\\007\000\004\000\008\000\003\000\009\000\077\000\010\000\001\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\004\000\078\000\013\000\034\000\019\000\027\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\011\000\081\000\012\000\064\000\013\000\063\000\019\000\027\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\"
+val numstates = 84
+val numrules = 50
+val s = ref "" and index = ref 0
+val string_to_int = fn () =>
+let val i = !index
+in index := i+2; Char.ord(String.sub(!s,i)) + Char.ord(String.sub(!s,i+1)) * 256
+end
+val string_to_list = fn s' =>
+ let val len = String.size s'
+ fun f () =
+ if !index < len then string_to_int() :: f()
+ else nil
+ in index := 0; s := s'; f ()
+ end
+val string_to_pairlist = fn (conv_key,conv_entry) =>
+ let fun f () =
+ case string_to_int()
+ of 0 => EMPTY
+ | n => PAIR(conv_key (n-1),conv_entry (string_to_int()),f())
+ in f
+ end
+val string_to_pairlist_default = fn (conv_key,conv_entry) =>
+ let val conv_row = string_to_pairlist(conv_key,conv_entry)
+ in fn () =>
+ let val default = conv_entry(string_to_int())
+ val row = conv_row()
+ in (row,default)
+ end
+ end
+val string_to_table = fn (convert_row,s') =>
+ let val len = String.size s'
+ fun f ()=
+ if !index < len then convert_row() :: f()
+ else nil
+ in (s := s'; index := 0; f ())
+ end
+local
+ val memo = Array.array(numstates+numrules,ERROR)
+ val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1))
+ fun f i =
+ if i=numstates then g i
+ else (Array.update(memo,i,SHIFT (STATE i)); f (i+1))
+ in f 0 handle Subscript => ()
+ end
+in
+val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub(memo,(j-2))
+end
+val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
+val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
+val actionRowNumbers = string_to_list actionRowNumbers
+val actionT = let val actionRowLookUp=
+let val a=Array.fromList(actionRows) in fn i=>Array.sub(a,i) end
+in Array.fromList(map actionRowLookUp actionRowNumbers)
+end
+in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
+numStates=numstates,initialState=STATE 0}
+end
+end
+local open Header in
+type pos = SourcePos.t
+type arg = unit
+structure MlyValue =
+struct
+datatype svalue = VOID | ntVOID of unit -> unit
+ | STRING of unit -> (string) | FILE of unit -> (string)
+ | ID of unit -> (string) | strid of unit -> (Strid.t)
+ | strbinds'' of unit -> (strbinds)
+ | strbinds' of unit -> (Strid.t*strbinds)
+ | strbinds of unit -> (strbinds) | sigid of unit -> (Sigid.t)
+ | sigbinds'' of unit -> (sigbinds)
+ | sigbinds' of unit -> (Sigid.t*sigbinds)
+ | sigbinds of unit -> (sigbinds) | mlb of unit -> (Basdec.t)
+ | id of unit -> (Symbol.t*Region.t) | fctid of unit -> (Fctid.t)
+ | fctbinds'' of unit -> (fctbinds)
+ | fctbinds' of unit -> (Fctid.t*fctbinds)
+ | fctbinds of unit -> (fctbinds) | basids of unit -> (Basid.t list)
+ | basid of unit -> (Basid.t) | basexpnode of unit -> (Basexp.node)
+ | basexp of unit -> (Basexp.t)
+ | basdecsnode of unit -> (Basdec.node)
+ | basdecs of unit -> (Basdec.t)
+ | basdecnode of unit -> (Basdec.node)
+ | basdec of unit -> (Basdec.t) | basbinds'' of unit -> (basbinds)
+ | basbinds' of unit -> (Basexp.t*basbinds)
+ | basbinds of unit -> (basbinds)
+ | annStar of unit -> ( ( string * Region.t ) list)
+ | annPlus of unit -> ( ( string * Region.t ) list)
+ | ann of unit -> (string*Region.t)
+end
+type svalue = MlyValue.svalue
+type result = Basdec.t
+end
+structure EC=
+struct
+open LrTable
+infix 5 $$
+fun x $$ y = y::x
+val is_keyword =
+fn (T 4) => true | (T 5) => true | (T 6) => true | (T 7) => true | (T
+9) => true | (T 10) => true | (T 11) => true | (T 12) => true | (T 13)
+ => true | (T 14) => true | (T 15) => true | (T 16) => true | (T 17)
+ => true | _ => false
+val preferred_change : (term list * term list) list =
+(nil
+,nil
+ $$ (T 2))::
+(nil
+,nil
+ $$ (T 7) $$ (T 0) $$ (T 10))::
+nil
+val noShift =
+fn (T 3) => true | _ => false
+val showTerminal =
+fn (T 0) => "ID"
+ | (T 1) => "COMMA"
+ | (T 2) => "SEMICOLON"
+ | (T 3) => "EOF"
+ | (T 4) => "AND"
+ | (T 5) => "BAS"
+ | (T 6) => "BASIS"
+ | (T 7) => "END"
+ | (T 8) => "EQUALOP"
+ | (T 9) => "FUNCTOR"
+ | (T 10) => "IN"
+ | (T 11) => "LET"
+ | (T 12) => "LOCAL"
+ | (T 13) => "OPEN"
+ | (T 14) => "SIGNATURE"
+ | (T 15) => "STRUCTURE"
+ | (T 16) => "ANN"
+ | (T 17) => "PRIM"
+ | (T 18) => "FILE"
+ | (T 19) => "STRING"
+ | _ => "bogus-term"
+local open Header in
+val errtermvalue=
+fn (T 0) => MlyValue.ID(fn () => ("bogus")) |
+_ => MlyValue.VOID
+end
+val terms : term list = nil
+ $$ (T 17) $$ (T 16) $$ (T 15) $$ (T 14) $$ (T 13) $$ (T 12) $$ (T 11)
+ $$ (T 10) $$ (T 9) $$ (T 8) $$ (T 7) $$ (T 6) $$ (T 5) $$ (T 4) $$
+(T 3) $$ (T 2) $$ (T 1)end
+structure Actions =
+struct
+type int = Int.int
+exception mlyAction of int
+local open Header in
+val actions =
+fn (i392:int,defaultPos,stack,
+ (()):arg) =>
+case (i392,stack)
+of ( 0, ( ( _, ( MlyValue.basdecs basdecs1, basdecs1left,
+basdecs1right)) :: rest671)) => let val result = MlyValue.mlb (fn _
+ => let val (basdecs as basdecs1) = basdecs1 ()
+ in (basdecs)
+end)
+ in ( LrTable.NT 19, ( result, basdecs1left, basdecs1right), rest671)
+
+end
+| ( 1, ( ( _, ( MlyValue.basdecsnode basdecsnode1, (basdecsnodeleft
+ as basdecsnode1left), (basdecsnoderight as basdecsnode1right))) ::
+rest671)) => let val result = MlyValue.basdecs (fn _ => let val (
+basdecsnode as basdecsnode1) = basdecsnode1 ()
+ in (
+Basdec.makeRegion'
+ (basdecsnode, basdecsnodeleft, basdecsnoderight)
+)
+end)
+ in ( LrTable.NT 8, ( result, basdecsnode1left, basdecsnode1right),
+rest671)
+end
+| ( 2, ( rest671)) => let val result = MlyValue.basdecsnode (fn _ =>
+ (Basdec.Seq []))
+ in ( LrTable.NT 9, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 3, ( ( _, ( MlyValue.basdecs basdecs1, _, basdecs1right)) :: ( _,
+ ( _, SEMICOLON1left, _)) :: rest671)) => let val result =
+MlyValue.basdecsnode (fn _ => let val (basdecs as basdecs1) =
+basdecs1 ()
+ in (Basdec.Seq [basdecs])
+end)
+ in ( LrTable.NT 9, ( result, SEMICOLON1left, basdecs1right), rest671)
+
+end
+| ( 4, ( ( _, ( MlyValue.basdecs basdecs1, _, basdecs1right)) :: ( _,
+ ( MlyValue.basdec basdec1, basdec1left, _)) :: rest671)) => let val
+result = MlyValue.basdecsnode (fn _ => let val (basdec as basdec1) =
+basdec1 ()
+ val (basdecs as basdecs1) = basdecs1 ()
+ in (Basdec.Seq [basdec, basdecs])
+end)
+ in ( LrTable.NT 9, ( result, basdec1left, basdecs1right), rest671)
+
+end
+| ( 5, ( ( _, ( MlyValue.basdecnode basdecnode1, (basdecnodeleft as
+basdecnode1left), (basdecnoderight as basdecnode1right))) :: rest671))
+ => let val result = MlyValue.basdec (fn _ => let val (basdecnode
+ as basdecnode1) = basdecnode1 ()
+ in (
+Basdec.makeRegion'
+ (basdecnode, basdecnodeleft, basdecnoderight)
+)
+end)
+ in ( LrTable.NT 6, ( result, basdecnode1left, basdecnode1right),
+rest671)
+end
+| ( 6, ( ( _, ( MlyValue.fctbinds fctbinds1, _, (fctbindsright as
+fctbinds1right))) :: ( _, ( _, (FUNCTORleft as FUNCTOR1left), _)) ::
+rest671)) => let val result = MlyValue.basdecnode (fn _ => let val (
+fctbinds as fctbinds1) = fctbinds1 ()
+ in (
+let
+ val fctbinds = Vector.fromList fctbinds
+ in
+ Basdec.Defs (ModIdBind.makeRegion' (ModIdBind.Fct fctbinds, FUNCTORleft, fctbindsright))
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, FUNCTOR1left, fctbinds1right), rest671)
+
+end
+| ( 7, ( ( _, ( MlyValue.sigbinds sigbinds1, _, (sigbindsright as
+sigbinds1right))) :: ( _, ( _, (SIGNATUREleft as SIGNATURE1left), _))
+ :: rest671)) => let val result = MlyValue.basdecnode (fn _ => let
+ val (sigbinds as sigbinds1) = sigbinds1 ()
+ in (
+let
+ val sigbinds = Vector.fromList sigbinds
+ in
+ Basdec.Defs (ModIdBind.makeRegion' (ModIdBind.Sig sigbinds, SIGNATUREleft, sigbindsright))
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, SIGNATURE1left, sigbinds1right), rest671
+)
+end
+| ( 8, ( ( _, ( MlyValue.strbinds strbinds1, _, (strbindsright as
+strbinds1right))) :: ( _, ( _, (STRUCTUREleft as STRUCTURE1left), _))
+ :: rest671)) => let val result = MlyValue.basdecnode (fn _ => let
+ val (strbinds as strbinds1) = strbinds1 ()
+ in (
+let
+ val strbinds = Vector.fromList strbinds
+ in
+ Basdec.Defs (ModIdBind.makeRegion' (ModIdBind.Str strbinds, STRUCTUREleft, strbindsright))
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, STRUCTURE1left, strbinds1right), rest671
+)
+end
+| ( 9, ( ( _, ( MlyValue.basbinds basbinds1, _, basbinds1right)) :: (
+ _, ( _, BASIS1left, _)) :: rest671)) => let val result =
+MlyValue.basdecnode (fn _ => let val (basbinds as basbinds1) =
+basbinds1 ()
+ in (
+let
+ val basbinds = Vector.fromList basbinds
+ in
+ Basdec.Basis basbinds
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, BASIS1left, basbinds1right), rest671)
+
+end
+| ( 10, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.basdecs
+basdecs2, _, _)) :: _ :: ( _, ( MlyValue.basdecs basdecs1, _, _)) :: (
+ _, ( _, LOCAL1left, _)) :: rest671)) => let val result =
+MlyValue.basdecnode (fn _ => let val basdecs1 = basdecs1 ()
+ val basdecs2 = basdecs2 ()
+ in (Basdec.Local (basdecs1, basdecs2))
+end)
+ in ( LrTable.NT 7, ( result, LOCAL1left, END1right), rest671)
+end
+| ( 11, ( ( _, ( MlyValue.basids basids1, _, basids1right)) :: ( _, (
+ _, OPEN1left, _)) :: rest671)) => let val result =
+MlyValue.basdecnode (fn _ => let val (basids as basids1) = basids1 ()
+ in (Basdec.Open (Vector.fromList basids))
+end)
+ in ( LrTable.NT 7, ( result, OPEN1left, basids1right), rest671)
+end
+| ( 12, ( ( _, ( MlyValue.FILE FILE1, (FILEleft as FILE1left), (
+FILEright as FILE1right))) :: rest671)) => let val result =
+MlyValue.basdecnode (fn _ => let val (FILE as FILE1) = FILE1 ()
+ in (
+let val reg = reg (FILEleft, FILEright)
+ in lexAndParseProgOrMLB (FILE, reg)
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, FILE1left, FILE1right), rest671)
+end
+| ( 13, ( ( _, ( MlyValue.STRING STRING1, (STRINGleft as STRING1left)
+, (STRINGright as STRING1right))) :: rest671)) => let val result =
+MlyValue.basdecnode (fn _ => let val (STRING as STRING1) = STRING1 ()
+ in (
+let val reg = reg (STRINGleft, STRINGright)
+ in lexAndParseProgOrMLB (STRING, reg)
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, STRING1left, STRING1right), rest671)
+end
+| ( 14, ( ( _, ( _, PRIM1left, PRIM1right)) :: rest671)) => let val
+result = MlyValue.basdecnode (fn _ => (Basdec.Prim))
+ in ( LrTable.NT 7, ( result, PRIM1left, PRIM1right), rest671)
+end
+| ( 15, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.basdecs
+basdecs1, _, _)) :: _ :: ( _, ( MlyValue.annPlus annPlus1, _, _)) :: (
+ _, ( _, ANN1left, _)) :: rest671)) => let val result =
+MlyValue.basdecnode (fn _ => let val (annPlus as annPlus1) = annPlus1
+ ()
+ val (basdecs as basdecs1) = basdecs1 ()
+ in (
+let
+ val extendRight =
+ let val right = valOf (Region.right (Basdec.region basdecs))
+ in fn reg => Region.extendRight (reg, right)
+ end
+ fun mkAnn' ((ann,reg), basdecs) = Basdec.Ann (ann, reg, basdecs)
+ fun mkAnn ((ann,reg), basdecsnode) : Basdec.node =
+ mkAnn' ((ann,reg), Basdec.makeRegion (basdecsnode, extendRight reg))
+ val (anns,ann) = List.splitLast annPlus
+ in
+ List.fold(anns, mkAnn'(ann, basdecs), mkAnn)
+ end
+)
+end)
+ in ( LrTable.NT 7, ( result, ANN1left, END1right), rest671)
+end
+| ( 16, ( ( _, ( MlyValue.fctbinds' fctbinds'1, _, fctbinds'1right))
+ :: _ :: ( _, ( MlyValue.fctid fctid1, fctid1left, _)) :: rest671)) =>
+ let val result = MlyValue.fctbinds (fn _ => let val (fctid as
+fctid1) = fctid1 ()
+ val (fctbinds' as fctbinds'1) = fctbinds'1 ()
+ in (
+let val (def, fctbinds) = fctbinds'
+ in {lhs = fctid, rhs = def}
+ :: fctbinds
+ end
+)
+end)
+ in ( LrTable.NT 14, ( result, fctid1left, fctbinds'1right), rest671)
+
+end
+| ( 17, ( ( _, ( MlyValue.fctbinds'' fctbinds''1, _, fctbinds''1right
+)) :: ( _, ( MlyValue.fctid fctid1, fctid1left, _)) :: rest671)) =>
+ let val result = MlyValue.fctbinds (fn _ => let val (fctid as
+fctid1) = fctid1 ()
+ val (fctbinds'' as fctbinds''1) = fctbinds''1 ()
+ in ({lhs = fctid, rhs = fctid} :: fctbinds'')
+end)
+ in ( LrTable.NT 14, ( result, fctid1left, fctbinds''1right), rest671)
+
+end
+| ( 18, ( ( _, ( MlyValue.fctbinds'' fctbinds''1, _, fctbinds''1right
+)) :: ( _, ( MlyValue.fctid fctid1, fctid1left, _)) :: rest671)) =>
+ let val result = MlyValue.fctbinds' (fn _ => let val (fctid as
+fctid1) = fctid1 ()
+ val (fctbinds'' as fctbinds''1) = fctbinds''1 ()
+ in (fctid, fctbinds'')
+end)
+ in ( LrTable.NT 15, ( result, fctid1left, fctbinds''1right), rest671)
+
+end
+| ( 19, ( rest671)) => let val result = MlyValue.fctbinds'' (fn _ =>
+ ([]))
+ in ( LrTable.NT 16, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 20, ( ( _, ( MlyValue.fctbinds fctbinds1, _, fctbinds1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.fctbinds'' (fn _ => let val (fctbinds as fctbinds1) =
+fctbinds1 ()
+ in (fctbinds)
+end)
+ in ( LrTable.NT 16, ( result, AND1left, fctbinds1right), rest671)
+end
+| ( 21, ( ( _, ( MlyValue.sigbinds' sigbinds'1, _, sigbinds'1right))
+ :: _ :: ( _, ( MlyValue.sigid sigid1, sigid1left, _)) :: rest671)) =>
+ let val result = MlyValue.sigbinds (fn _ => let val (sigid as
+sigid1) = sigid1 ()
+ val (sigbinds' as sigbinds'1) = sigbinds'1 ()
+ in (
+let val (def, sigbinds) = sigbinds'
+ in {lhs = sigid, rhs = def}
+ :: sigbinds
+ end
+)
+end)
+ in ( LrTable.NT 20, ( result, sigid1left, sigbinds'1right), rest671)
+
+end
+| ( 22, ( ( _, ( MlyValue.sigbinds'' sigbinds''1, _, sigbinds''1right
+)) :: ( _, ( MlyValue.sigid sigid1, sigid1left, _)) :: rest671)) =>
+ let val result = MlyValue.sigbinds (fn _ => let val (sigid as
+sigid1) = sigid1 ()
+ val (sigbinds'' as sigbinds''1) = sigbinds''1 ()
+ in ({lhs = sigid, rhs = sigid} :: sigbinds'')
+end)
+ in ( LrTable.NT 20, ( result, sigid1left, sigbinds''1right), rest671)
+
+end
+| ( 23, ( ( _, ( MlyValue.sigbinds'' sigbinds''1, _, sigbinds''1right
+)) :: ( _, ( MlyValue.sigid sigid1, sigid1left, _)) :: rest671)) =>
+ let val result = MlyValue.sigbinds' (fn _ => let val (sigid as
+sigid1) = sigid1 ()
+ val (sigbinds'' as sigbinds''1) = sigbinds''1 ()
+ in (sigid, sigbinds'')
+end)
+ in ( LrTable.NT 21, ( result, sigid1left, sigbinds''1right), rest671)
+
+end
+| ( 24, ( rest671)) => let val result = MlyValue.sigbinds'' (fn _ =>
+ ([]))
+ in ( LrTable.NT 22, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 25, ( ( _, ( MlyValue.sigbinds sigbinds1, _, sigbinds1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.sigbinds'' (fn _ => let val (sigbinds as sigbinds1) =
+sigbinds1 ()
+ in (sigbinds)
+end)
+ in ( LrTable.NT 22, ( result, AND1left, sigbinds1right), rest671)
+end
+| ( 26, ( ( _, ( MlyValue.strbinds' strbinds'1, _, strbinds'1right))
+ :: _ :: ( _, ( MlyValue.strid strid1, strid1left, _)) :: rest671)) =>
+ let val result = MlyValue.strbinds (fn _ => let val (strid as
+strid1) = strid1 ()
+ val (strbinds' as strbinds'1) = strbinds'1 ()
+ in (
+let val (def, strbinds) = strbinds'
+ in {lhs = strid, rhs = def}
+ :: strbinds
+ end
+)
+end)
+ in ( LrTable.NT 24, ( result, strid1left, strbinds'1right), rest671)
+
+end
+| ( 27, ( ( _, ( MlyValue.strbinds'' strbinds''1, _, strbinds''1right
+)) :: ( _, ( MlyValue.strid strid1, strid1left, _)) :: rest671)) =>
+ let val result = MlyValue.strbinds (fn _ => let val (strid as
+strid1) = strid1 ()
+ val (strbinds'' as strbinds''1) = strbinds''1 ()
+ in ({lhs = strid, rhs = strid} :: strbinds'')
+end)
+ in ( LrTable.NT 24, ( result, strid1left, strbinds''1right), rest671)
+
+end
+| ( 28, ( ( _, ( MlyValue.strbinds'' strbinds''1, _, strbinds''1right
+)) :: ( _, ( MlyValue.strid strid1, strid1left, _)) :: rest671)) =>
+ let val result = MlyValue.strbinds' (fn _ => let val (strid as
+strid1) = strid1 ()
+ val (strbinds'' as strbinds''1) = strbinds''1 ()
+ in (strid, strbinds'')
+end)
+ in ( LrTable.NT 25, ( result, strid1left, strbinds''1right), rest671)
+
+end
+| ( 29, ( rest671)) => let val result = MlyValue.strbinds'' (fn _ =>
+ ([]))
+ in ( LrTable.NT 26, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 30, ( ( _, ( MlyValue.strbinds strbinds1, _, strbinds1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.strbinds'' (fn _ => let val (strbinds as strbinds1) =
+strbinds1 ()
+ in (strbinds)
+end)
+ in ( LrTable.NT 26, ( result, AND1left, strbinds1right), rest671)
+end
+| ( 31, ( ( _, ( MlyValue.basbinds' basbinds'1, _, basbinds'1right))
+ :: _ :: ( _, ( MlyValue.basid basid1, basid1left, _)) :: rest671)) =>
+ let val result = MlyValue.basbinds (fn _ => let val (basid as
+basid1) = basid1 ()
+ val (basbinds' as basbinds'1) = basbinds'1 ()
+ in (
+let val (def, basbinds) = basbinds'
+ in {name = basid, def = def}
+ :: basbinds
+ end
+)
+end)
+ in ( LrTable.NT 3, ( result, basid1left, basbinds'1right), rest671)
+
+end
+| ( 32, ( ( _, ( MlyValue.basbinds'' basbinds''1, _, basbinds''1right
+)) :: ( _, ( MlyValue.basexp basexp1, basexp1left, _)) :: rest671)) =>
+ let val result = MlyValue.basbinds' (fn _ => let val (basexp as
+basexp1) = basexp1 ()
+ val (basbinds'' as basbinds''1) = basbinds''1 ()
+ in (basexp, basbinds'')
+end)
+ in ( LrTable.NT 4, ( result, basexp1left, basbinds''1right), rest671)
+
+end
+| ( 33, ( rest671)) => let val result = MlyValue.basbinds'' (fn _ =>
+ ([]))
+ in ( LrTable.NT 5, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 34, ( ( _, ( MlyValue.basbinds basbinds1, _, basbinds1right)) ::
+( _, ( _, AND1left, _)) :: rest671)) => let val result =
+MlyValue.basbinds'' (fn _ => let val (basbinds as basbinds1) =
+basbinds1 ()
+ in (basbinds)
+end)
+ in ( LrTable.NT 5, ( result, AND1left, basbinds1right), rest671)
+end
+| ( 35, ( ( _, ( MlyValue.basexpnode basexpnode1, (basexpnodeleft as
+basexpnode1left), (basexpnoderight as basexpnode1right))) :: rest671))
+ => let val result = MlyValue.basexp (fn _ => let val (basexpnode
+ as basexpnode1) = basexpnode1 ()
+ in (
+Basexp.makeRegion'
+ (basexpnode, basexpnodeleft, basexpnoderight)
+)
+end)
+ in ( LrTable.NT 10, ( result, basexpnode1left, basexpnode1right),
+rest671)
+end
+| ( 36, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.basdecs
+basdecs1, _, _)) :: ( _, ( _, BAS1left, _)) :: rest671)) => let val
+result = MlyValue.basexpnode (fn _ => let val (basdecs as basdecs1) =
+ basdecs1 ()
+ in (Basexp.Bas basdecs)
+end)
+ in ( LrTable.NT 11, ( result, BAS1left, END1right), rest671)
+end
+| ( 37, ( ( _, ( MlyValue.basid basid1, basid1left, basid1right)) ::
+rest671)) => let val result = MlyValue.basexpnode (fn _ => let val (
+basid as basid1) = basid1 ()
+ in (Basexp.Var basid)
+end)
+ in ( LrTable.NT 11, ( result, basid1left, basid1right), rest671)
+end
+| ( 38, ( ( _, ( _, _, END1right)) :: ( _, ( MlyValue.basexp basexp1,
+ _, _)) :: _ :: ( _, ( MlyValue.basdecs basdecs1, _, _)) :: ( _, ( _,
+LET1left, _)) :: rest671)) => let val result = MlyValue.basexpnode
+ (fn _ => let val (basdecs as basdecs1) = basdecs1 ()
+ val (basexp as basexp1) = basexp1 ()
+ in (Basexp.Let (basdecs, basexp))
+end)
+ in ( LrTable.NT 11, ( result, LET1left, END1right), rest671)
+end
+| ( 39, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671)) =>
+ let val result = MlyValue.basid (fn _ => let val (id as id1) = id1
+ ()
+ in (Basid.fromSymbol id)
+end)
+ in ( LrTable.NT 12, ( result, id1left, id1right), rest671)
+end
+| ( 40, ( ( _, ( MlyValue.basid basid1, basid1left, basid1right)) ::
+rest671)) => let val result = MlyValue.basids (fn _ => let val (
+basid as basid1) = basid1 ()
+ in ([basid])
+end)
+ in ( LrTable.NT 13, ( result, basid1left, basid1right), rest671)
+end
+| ( 41, ( ( _, ( MlyValue.basids basids1, _, basids1right)) :: ( _, (
+ MlyValue.basid basid1, basid1left, _)) :: rest671)) => let val
+result = MlyValue.basids (fn _ => let val (basid as basid1) = basid1
+ ()
+ val (basids as basids1) = basids1 ()
+ in (basid :: basids)
+end)
+ in ( LrTable.NT 13, ( result, basid1left, basids1right), rest671)
+end
+| ( 42, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671)) =>
+ let val result = MlyValue.fctid (fn _ => let val (id as id1) = id1
+ ()
+ in (Fctid.fromSymbol id)
+end)
+ in ( LrTable.NT 17, ( result, id1left, id1right), rest671)
+end
+| ( 43, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671)) =>
+ let val result = MlyValue.sigid (fn _ => let val (id as id1) = id1
+ ()
+ in (Sigid.fromSymbol id)
+end)
+ in ( LrTable.NT 23, ( result, id1left, id1right), rest671)
+end
+| ( 44, ( ( _, ( MlyValue.id id1, id1left, id1right)) :: rest671)) =>
+ let val result = MlyValue.strid (fn _ => let val (id as id1) = id1
+ ()
+ in (Strid.fromSymbol id)
+end)
+ in ( LrTable.NT 27, ( result, id1left, id1right), rest671)
+end
+| ( 45, ( ( _, ( MlyValue.ID ID1, (IDleft as ID1left), (IDright as
+ID1right))) :: rest671)) => let val result = MlyValue.id (fn _ => let
+ val (ID as ID1) = ID1 ()
+ in (Symbol.fromString ID, reg (IDleft, IDright))
+end)
+ in ( LrTable.NT 18, ( result, ID1left, ID1right), rest671)
+end
+| ( 46, ( ( _, ( MlyValue.STRING STRING1, (STRINGleft as STRING1left)
+, (STRINGright as STRING1right))) :: rest671)) => let val result =
+MlyValue.ann (fn _ => let val (STRING as STRING1) = STRING1 ()
+ in (STRING, reg (STRINGleft, STRINGright))
+end)
+ in ( LrTable.NT 0, ( result, STRING1left, STRING1right), rest671)
+end
+| ( 47, ( ( _, ( MlyValue.annStar annStar1, _, annStar1right)) :: ( _
+, ( MlyValue.ann ann1, ann1left, _)) :: rest671)) => let val result =
+ MlyValue.annPlus (fn _ => let val (ann as ann1) = ann1 ()
+ val (annStar as annStar1) = annStar1 ()
+ in (ann::annStar)
+end)
+ in ( LrTable.NT 1, ( result, ann1left, annStar1right), rest671)
+end
+| ( 48, ( rest671)) => let val result = MlyValue.annStar (fn _ => (
+[]))
+ in ( LrTable.NT 2, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 49, ( ( _, ( MlyValue.annPlus annPlus1, annPlus1left,
+annPlus1right)) :: rest671)) => let val result = MlyValue.annStar (fn
+ _ => let val (annPlus as annPlus1) = annPlus1 ()
+ in (annPlus)
+end)
+ in ( LrTable.NT 2, ( result, annPlus1left, annPlus1right), rest671)
+
+end
+| _ => raise (mlyAction i392)
+end
+val void = MlyValue.VOID
+val extract = fn a => (fn MlyValue.mlb x => x
+| _ => let exception ParseInternal
+ in raise ParseInternal end) a ()
+end
+end
+structure Tokens : MLB_TOKENS =
+struct
+type svalue = ParserData.svalue
+type ('a,'b) token = ('a,'b) Token.token
+fun ID (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 0,(
+ParserData.MlyValue.ID (fn () => i),p1,p2))
+fun COMMA (p1,p2) = Token.TOKEN (ParserData.LrTable.T 1,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SEMICOLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 2,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 3,(
+ParserData.MlyValue.VOID,p1,p2))
+fun AND (p1,p2) = Token.TOKEN (ParserData.LrTable.T 4,(
+ParserData.MlyValue.VOID,p1,p2))
+fun BAS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 5,(
+ParserData.MlyValue.VOID,p1,p2))
+fun BASIS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 6,(
+ParserData.MlyValue.VOID,p1,p2))
+fun END (p1,p2) = Token.TOKEN (ParserData.LrTable.T 7,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EQUALOP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8,(
+ParserData.MlyValue.VOID,p1,p2))
+fun FUNCTOR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9,(
+ParserData.MlyValue.VOID,p1,p2))
+fun IN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 10,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LET (p1,p2) = Token.TOKEN (ParserData.LrTable.T 11,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LOCAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 12,(
+ParserData.MlyValue.VOID,p1,p2))
+fun OPEN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SIGNATURE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 14,(
+ParserData.MlyValue.VOID,p1,p2))
+fun STRUCTURE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 15,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ANN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 16,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PRIM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 17,(
+ParserData.MlyValue.VOID,p1,p2))
+fun FILE (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 18,(
+ParserData.MlyValue.FILE (fn () => i),p1,p2))
+fun STRING (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 19,(
+ParserData.MlyValue.STRING (fn () => i),p1,p2))
+end
+end
diff --git a/lang/mlton/files/mlb.lex.sml b/lang/mlton/files/mlb.lex.sml
new file mode 100644
index 000000000000..7ffe122e7248
--- /dev/null
+++ b/lang/mlton/files/mlb.lex.sml
@@ -0,0 +1,1854 @@
+type int = Int.int
+functor MLBLexFun (structure Tokens : MLB_TOKENS)=
+ struct
+ structure UserDeclarations =
+ struct
+(* Copyright (C) 2004-2006 Henry Cejtin, Matthew Fluet, Suresh
+ * Jagannathan, and Stephen Weeks.
+ *
+ * MLton is released under a BSD-style license.
+ * See the file MLton-LICENSE for details.
+ *)
+
+type int = Int.t
+
+type svalue = Tokens.svalue
+type pos = SourcePos.t
+type lexresult = (svalue, pos) Tokens.token
+type lexarg = {source: Source.t}
+type arg = lexarg
+type ('a,'b) token = ('a,'b) Tokens.token
+
+val charlist: string list ref = ref []
+val colNum: int ref = ref 0
+val commentLevel: int ref = ref 0
+val commentStart = ref SourcePos.bogus
+val lineFile: File.t ref = ref ""
+val lineNum: int ref = ref 0
+val stringStart = ref SourcePos.bogus
+
+fun lineDirective (source, file, yypos) =
+ Source.lineDirective (source, file,
+ {lineNum = !lineNum,
+ lineStart = yypos - !colNum})
+fun addString (s: string) = charlist := s :: (!charlist)
+fun addChar (c: char) = addString (String.fromChar c)
+
+fun inc (ri as ref (i: int)) = (ri := i + 1)
+fun dec (ri as ref (i: int)) = (ri := i-1)
+
+fun error (source, left, right, msg) =
+ Control.errorStr (Region.make {left = Source.getPos (source, left),
+ right = Source.getPos (source, right)},
+ msg)
+
+fun stringError (source, right, msg) =
+ Control.errorStr (Region.make {left = !stringStart,
+ right = Source.getPos (source, right)},
+ msg)
+
+val eof: lexarg -> lexresult =
+ fn {source, ...} =>
+ let
+ val pos = Source.lineStart source
+ val _ =
+ if !commentLevel > 0
+ then Control.errorStr (Region.make {left = !commentStart,
+ right = pos},
+ "unclosed comment")
+ else ()
+ in
+ Tokens.EOF (pos, pos)
+ end
+
+val size = String.size
+
+fun tok (t, s, l, r) =
+ let
+ val l = Source.getPos (s, l)
+ val r = Source.getPos (s, r)
+ val _ =
+ if true
+ then ()
+ else
+ print (concat ["tok (",
+ SourcePos.toString l,
+ ", " ,
+ SourcePos.toString r,
+ ")\n"])
+ in
+ t (l, r)
+ end
+
+fun tok' (t, x, s, l) = tok (fn (l, r) => t (x, l, r), s, l, l + size x)
+
+end (* end of user routines *)
+exception LexError (* raised if illegal leaf action tried *)
+structure Internal =
+ struct
+
+datatype yyfinstate = N of int
+type statedata = {fin : yyfinstate list, trans: string}
+(* transition & final state table *)
+val tab = let
+val s = [
+ (0,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (1,
+"\017\017\017\017\017\017\017\017\017\127\130\017\127\129\017\017\
+\\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\017\
+\\127\017\126\017\125\017\017\017\117\017\017\017\116\095\115\096\
+\\095\095\095\095\095\095\095\095\095\095\017\094\017\093\017\017\
+\\017\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\
+\\018\018\018\018\018\018\018\018\018\018\018\017\017\017\017\088\
+\\017\084\079\018\018\076\069\018\018\067\018\018\060\018\018\056\
+\\018\018\018\039\018\018\018\018\018\018\018\017\017\017\017\017\
+\\017"
+),
+ (3,
+"\131\131\131\131\131\131\131\131\131\131\136\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\134\131\132\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
+\\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\131\
+\\131"
+),
+ (5,
+"\137\137\137\137\137\137\137\137\137\137\165\137\137\164\137\137\
+\\137\137\137\137\137\137\137\137\137\137\137\137\137\137\137\137\
+\\138\138\163\138\138\138\138\138\138\138\138\138\138\138\138\138\
+\\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\
+\\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\
+\\138\138\138\138\138\138\138\138\138\138\138\138\139\138\138\138\
+\\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\
+\\138\138\138\138\138\138\138\138\138\138\138\138\138\138\138\137\
+\\137"
+),
+ (7,
+"\166\166\166\166\166\166\166\166\166\168\171\166\168\170\166\166\
+\\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\
+\\168\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\
+\\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\
+\\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\
+\\166\166\166\166\166\166\166\166\166\166\166\166\167\166\166\166\
+\\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\
+\\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\166\
+\\166"
+),
+ (9,
+"\172\172\172\172\172\172\172\172\172\172\000\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\175\172\172\172\172\172\
+\\173\173\173\173\173\173\173\173\173\173\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172"
+),
+ (11,
+"\177\177\177\177\177\177\177\177\177\177\000\177\177\177\177\177\
+\\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\
+\\177\177\177\177\177\177\177\177\177\177\177\177\177\177\180\177\
+\\178\178\178\178\178\178\178\178\178\178\177\177\177\177\177\177\
+\\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\
+\\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\
+\\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\
+\\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\
+\\177"
+),
+ (13,
+"\172\172\172\172\172\172\172\172\172\184\000\172\184\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\184\172\183\172\172\172\172\172\172\172\181\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\172\
+\\172"
+),
+ (15,
+"\187\187\187\187\187\187\187\187\187\187\188\187\187\187\187\187\
+\\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\
+\\187\187\191\187\187\187\187\187\187\187\189\187\187\187\187\187\
+\\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\
+\\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\
+\\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\
+\\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\
+\\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\187\
+\\187"
+),
+ (18,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (20,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\035\000\000\000\000\000\000\000\000\021\033\000\
+\\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\000\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\021\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\
+\\000"
+),
+ (21,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\000\000\000\000\000\000\021\022\020\
+\\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\000\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\021\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\
+\\000"
+),
+ (22,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\027\000\000\000\000\000\000\000\000\023\000\000\
+\\023\023\023\023\023\023\023\023\023\023\000\000\000\000\000\000\
+\\000\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\
+\\023\023\023\023\023\023\023\023\023\023\023\000\000\000\000\023\
+\\000\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\
+\\023\023\023\023\023\023\023\023\023\023\023\000\000\000\000\000\
+\\000"
+),
+ (23,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\024\000\000\000\000\000\000\000\000\023\022\020\
+\\023\023\023\023\023\023\023\023\023\023\000\000\000\000\000\000\
+\\000\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\
+\\023\023\023\023\023\023\023\023\023\023\023\000\000\000\000\023\
+\\000\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\
+\\023\023\023\023\023\023\023\023\023\023\023\000\000\000\000\000\
+\\000"
+),
+ (24,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\025\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (25,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\
+\\026\026\026\026\026\026\026\026\026\026\026\000\000\000\000\026\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (26,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\023\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\026\026\026\026\026\026\026\026\026\026\026\026\026\026\026\
+\\026\026\026\026\026\026\026\026\026\026\026\000\000\000\000\026\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (27,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\028\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (28,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\
+\\029\029\029\029\029\029\029\029\029\029\029\000\000\000\000\029\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (29,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\023\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\
+\\029\029\029\029\029\029\029\029\029\029\029\000\000\000\000\029\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (30,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\031\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (31,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\032\032\032\032\032\032\032\032\032\032\032\032\032\032\032\
+\\032\032\032\032\032\032\032\032\032\032\032\000\000\000\000\032\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (32,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\032\032\032\032\032\032\032\032\032\032\032\032\032\032\032\
+\\032\032\032\032\032\032\032\032\032\032\032\000\000\000\000\032\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (33,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\034\020\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (34,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (35,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\036\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (36,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\037\037\037\037\037\037\037\037\037\037\037\037\037\037\037\
+\\037\037\037\037\037\037\037\037\037\037\037\000\000\000\000\037\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (37,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\037\037\037\037\037\037\037\037\037\037\037\037\037\037\037\
+\\037\037\037\037\037\037\037\037\037\037\037\000\000\000\000\037\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (38,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\038\000\000\000\000\000\000\000\000\
+\\038\038\038\038\038\038\038\038\038\038\000\000\000\000\000\000\
+\\000\038\038\038\038\038\038\038\038\038\038\038\038\038\038\038\
+\\038\038\038\038\038\038\038\038\038\038\038\000\000\000\000\038\
+\\000\038\038\038\038\038\038\038\038\038\038\038\038\038\038\038\
+\\038\038\038\038\038\038\038\038\038\038\038\000\000\000\000\000\
+\\000"
+),
+ (39,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\048\019\019\019\019\019\019\
+\\019\019\019\019\040\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (40,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\041\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (41,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\042\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (42,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\043\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (43,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\044\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (44,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\045\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (45,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\046\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (46,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\047\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (48,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\049\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (49,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\050\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (50,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\051\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (51,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\052\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (52,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\053\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (53,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\054\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (54,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\055\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (56,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\057\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (57,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\058\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (58,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\059\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (60,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\065\019\019\019\019\019\019\019\019\019\061\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (61,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\062\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (62,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\063\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (63,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\064\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (65,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\066\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (67,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\068\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (69,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\070\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (70,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\071\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (71,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\072\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (72,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\073\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (73,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\074\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (74,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\075\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (76,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\077\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (77,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\078\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (79,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\080\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (80,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\081\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (81,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\082\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (82,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\083\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (84,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\085\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (85,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\038\000\000\000\000\000\021\022\020\
+\\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\000\
+\\000\019\019\019\019\019\019\019\019\019\019\019\019\019\019\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\019\
+\\000\019\019\019\087\019\019\019\019\019\019\019\019\019\086\019\
+\\019\019\019\019\019\019\019\019\019\019\019\000\000\000\000\000\
+\\000"
+),
+ (88,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\000\000\000\000\000\000\021\022\020\
+\\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\000\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\021\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\089\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\
+\\000"
+),
+ (89,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\000\000\000\000\000\000\021\022\020\
+\\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\000\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\021\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\090\021\021\021\021\021\021\021\021\000\000\000\000\000\
+\\000"
+),
+ (90,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\000\000\000\000\000\000\021\022\020\
+\\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\000\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\021\
+\\000\021\021\021\021\021\021\021\021\091\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\
+\\000"
+),
+ (91,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\030\000\000\000\000\000\000\000\000\021\022\020\
+\\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\000\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\021\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\021\
+\\000\021\021\021\021\021\021\021\021\021\021\021\021\092\021\021\
+\\021\021\021\021\021\021\021\021\021\021\021\000\000\000\000\000\
+\\000"
+),
+ (96,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\101\000\000\000\000\000\000\000\000\097\099\000\
+\\097\097\097\097\097\097\097\097\097\097\000\000\000\000\000\000\
+\\000\097\097\097\097\097\097\097\097\097\097\097\097\097\097\097\
+\\097\097\097\097\097\097\097\097\097\097\097\000\000\000\000\097\
+\\000\097\097\097\097\097\097\097\097\097\097\097\097\097\097\097\
+\\097\097\097\097\097\097\097\097\097\097\097\000\000\000\000\000\
+\\000"
+),
+ (97,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\112\000\000\000\000\000\000\000\000\097\104\098\
+\\097\097\097\097\097\097\097\097\097\097\000\000\000\000\000\000\
+\\000\097\097\097\097\097\097\097\097\097\097\097\097\097\097\097\
+\\097\097\097\097\097\097\097\097\097\097\097\000\000\000\000\097\
+\\000\097\097\097\097\097\097\097\097\097\097\097\097\097\097\097\
+\\097\097\097\097\097\097\097\097\097\097\097\000\000\000\000\000\
+\\000"
+),
+ (99,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\100\098\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (100,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\098\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (101,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\102\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (102,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
+\\103\103\103\103\103\103\103\103\103\103\103\000\000\000\000\103\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (103,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\097\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\
+\\103\103\103\103\103\103\103\103\103\103\103\000\000\000\000\103\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (104,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\109\000\000\000\000\000\000\000\000\105\000\000\
+\\105\105\105\105\105\105\105\105\105\105\000\000\000\000\000\000\
+\\000\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
+\\105\105\105\105\105\105\105\105\105\105\105\000\000\000\000\105\
+\\000\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
+\\105\105\105\105\105\105\105\105\105\105\105\000\000\000\000\000\
+\\000"
+),
+ (105,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\106\000\000\000\000\000\000\000\000\105\104\098\
+\\105\105\105\105\105\105\105\105\105\105\000\000\000\000\000\000\
+\\000\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
+\\105\105\105\105\105\105\105\105\105\105\105\000\000\000\000\105\
+\\000\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\
+\\105\105\105\105\105\105\105\105\105\105\105\000\000\000\000\000\
+\\000"
+),
+ (106,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\107\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (107,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\108\108\108\108\108\108\108\108\108\108\108\108\108\108\108\
+\\108\108\108\108\108\108\108\108\108\108\108\000\000\000\000\108\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (108,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\105\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\108\108\108\108\108\108\108\108\108\108\108\108\108\108\108\
+\\108\108\108\108\108\108\108\108\108\108\108\000\000\000\000\108\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (109,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\110\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (110,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
+\\111\111\111\111\111\111\111\111\111\111\111\000\000\000\000\111\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (111,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\105\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\111\111\111\111\111\111\111\111\111\111\111\111\111\111\111\
+\\111\111\111\111\111\111\111\111\111\111\111\000\000\000\000\111\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (112,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\113\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (113,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
+\\114\114\114\114\114\114\114\114\114\114\114\000\000\000\000\114\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (114,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\097\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\114\114\114\114\114\114\114\114\114\114\114\114\114\114\114\
+\\114\114\114\114\114\114\114\114\114\114\114\000\000\000\000\114\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (117,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\118\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (118,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\119\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (119,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\120\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (120,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\121\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (121,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\122\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (122,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\123\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (123,
+"\000\000\000\000\000\000\000\000\000\124\000\000\124\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\124\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (127,
+"\000\000\000\000\000\000\000\000\000\128\000\000\128\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (129,
+"\000\000\000\000\000\000\000\000\000\000\130\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (132,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (134,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\135\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (139,
+"\000\000\000\000\000\000\000\000\000\160\162\000\160\161\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\160\000\159\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\156\156\156\156\156\156\156\156\156\156\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\155\000\152\000\
+\\000\151\150\000\000\000\149\000\000\000\000\000\000\000\148\000\
+\\000\000\147\000\146\141\140\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (141,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\142\142\142\142\142\142\142\142\142\142\000\000\000\000\000\000\
+\\000\142\142\142\142\142\142\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\142\142\142\142\142\142\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (142,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\143\143\143\143\143\143\143\143\143\143\000\000\000\000\000\000\
+\\000\143\143\143\143\143\143\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\143\143\143\143\143\143\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (143,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\144\144\144\144\144\144\144\144\144\144\000\000\000\000\000\000\
+\\000\144\144\144\144\144\144\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\144\144\144\144\144\144\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (144,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\145\145\145\145\145\145\145\145\145\145\000\000\000\000\000\000\
+\\000\145\145\145\145\145\145\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\145\145\145\145\145\145\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (152,
+"\153\153\153\153\153\153\153\153\153\153\000\153\153\153\153\153\
+\\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\
+\\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\
+\\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\
+\\154\154\154\154\154\154\154\154\154\154\154\154\154\154\154\154\
+\\154\154\154\154\154\154\154\154\154\154\154\154\154\154\154\154\
+\\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\
+\\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\153\
+\\153"
+),
+ (156,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\157\157\157\157\157\157\157\157\157\157\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (157,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\158\158\158\158\158\158\158\158\158\158\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (160,
+"\000\000\000\000\000\000\000\000\000\160\000\000\160\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (161,
+"\000\000\000\000\000\000\000\000\000\000\162\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (164,
+"\000\000\000\000\000\000\000\000\000\000\165\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (168,
+"\000\000\000\000\000\000\000\000\000\169\000\000\169\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (170,
+"\000\000\000\000\000\000\000\000\000\000\171\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (173,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\174\174\174\174\174\174\174\174\174\174\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (175,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\176\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (178,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\179\179\179\179\179\179\179\179\179\179\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (181,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\182\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (184,
+"\000\000\000\000\000\000\000\000\000\186\000\000\186\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\186\000\185\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (187,
+"\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\000\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188"
+),
+ (189,
+"\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\000\188\188\188\188\188\188\190\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\188\
+\\188"
+),
+ (191,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\192\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (192,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\193\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+(0, "")]
+fun f x = x
+val s = map f (rev (tl (rev s)))
+exception LexHackingError
+fun look ((j,x)::r, i) = if i = j then x else look(r, i)
+ | look ([], i) = raise LexHackingError
+fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)}
+in Vector.fromList(map g
+[{fin = [], trans = 0},
+{fin = [(N 2)], trans = 1},
+{fin = [(N 2)], trans = 1},
+{fin = [], trans = 3},
+{fin = [], trans = 3},
+{fin = [], trans = 5},
+{fin = [], trans = 5},
+{fin = [(N 323)], trans = 7},
+{fin = [(N 323)], trans = 7},
+{fin = [], trans = 9},
+{fin = [], trans = 9},
+{fin = [], trans = 11},
+{fin = [], trans = 11},
+{fin = [], trans = 13},
+{fin = [], trans = 13},
+{fin = [(N 223)], trans = 15},
+{fin = [(N 223)], trans = 15},
+{fin = [(N 204)], trans = 0},
+{fin = [(N 90),(N 185),(N 204)], trans = 18},
+{fin = [(N 90),(N 185)], trans = 18},
+{fin = [], trans = 20},
+{fin = [(N 185)], trans = 21},
+{fin = [], trans = 22},
+{fin = [(N 185)], trans = 23},
+{fin = [], trans = 24},
+{fin = [], trans = 25},
+{fin = [], trans = 26},
+{fin = [], trans = 27},
+{fin = [], trans = 28},
+{fin = [], trans = 29},
+{fin = [], trans = 30},
+{fin = [], trans = 31},
+{fin = [], trans = 32},
+{fin = [], trans = 33},
+{fin = [], trans = 34},
+{fin = [], trans = 35},
+{fin = [], trans = 36},
+{fin = [], trans = 37},
+{fin = [(N 90)], trans = 38},
+{fin = [(N 90),(N 185),(N 204)], trans = 39},
+{fin = [(N 90),(N 185)], trans = 40},
+{fin = [(N 90),(N 185)], trans = 41},
+{fin = [(N 90),(N 185)], trans = 42},
+{fin = [(N 90),(N 185)], trans = 43},
+{fin = [(N 90),(N 185)], trans = 44},
+{fin = [(N 90),(N 185)], trans = 45},
+{fin = [(N 90),(N 185)], trans = 46},
+{fin = [(N 87),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185)], trans = 48},
+{fin = [(N 90),(N 185)], trans = 49},
+{fin = [(N 90),(N 185)], trans = 50},
+{fin = [(N 90),(N 185)], trans = 51},
+{fin = [(N 90),(N 185)], trans = 52},
+{fin = [(N 90),(N 185)], trans = 53},
+{fin = [(N 90),(N 185)], trans = 54},
+{fin = [(N 77),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 56},
+{fin = [(N 90),(N 185)], trans = 57},
+{fin = [(N 90),(N 185)], trans = 58},
+{fin = [(N 67),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 60},
+{fin = [(N 90),(N 185)], trans = 61},
+{fin = [(N 90),(N 185)], trans = 62},
+{fin = [(N 90),(N 185)], trans = 63},
+{fin = [(N 62),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185)], trans = 65},
+{fin = [(N 56),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 67},
+{fin = [(N 52),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 69},
+{fin = [(N 90),(N 185)], trans = 70},
+{fin = [(N 90),(N 185)], trans = 71},
+{fin = [(N 90),(N 185)], trans = 72},
+{fin = [(N 90),(N 185)], trans = 73},
+{fin = [(N 90),(N 185)], trans = 74},
+{fin = [(N 49),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 76},
+{fin = [(N 90),(N 185)], trans = 77},
+{fin = [(N 41),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 79},
+{fin = [(N 90),(N 185)], trans = 80},
+{fin = [(N 31),(N 90),(N 185)], trans = 81},
+{fin = [(N 90),(N 185)], trans = 82},
+{fin = [(N 37),(N 90),(N 185)], trans = 18},
+{fin = [(N 90),(N 185),(N 204)], trans = 84},
+{fin = [(N 90),(N 185)], trans = 85},
+{fin = [(N 23),(N 90),(N 185)], trans = 18},
+{fin = [(N 27),(N 90),(N 185)], trans = 18},
+{fin = [(N 185),(N 204)], trans = 88},
+{fin = [(N 185)], trans = 89},
+{fin = [(N 185)], trans = 90},
+{fin = [(N 185)], trans = 91},
+{fin = [(N 13),(N 185)], trans = 21},
+{fin = [(N 19),(N 204)], trans = 0},
+{fin = [(N 17),(N 204)], trans = 0},
+{fin = [(N 185),(N 204)], trans = 21},
+{fin = [(N 204)], trans = 96},
+{fin = [(N 185)], trans = 97},
+{fin = [], trans = 96},
+{fin = [], trans = 99},
+{fin = [], trans = 100},
+{fin = [], trans = 101},
+{fin = [], trans = 102},
+{fin = [], trans = 103},
+{fin = [], trans = 104},
+{fin = [(N 185)], trans = 105},
+{fin = [], trans = 106},
+{fin = [], trans = 107},
+{fin = [], trans = 108},
+{fin = [], trans = 109},
+{fin = [], trans = 110},
+{fin = [], trans = 111},
+{fin = [], trans = 112},
+{fin = [], trans = 113},
+{fin = [], trans = 114},
+{fin = [(N 204)], trans = 33},
+{fin = [(N 15),(N 204)], trans = 0},
+{fin = [(N 204)], trans = 117},
+{fin = [(N 202)], trans = 118},
+{fin = [], trans = 119},
+{fin = [], trans = 120},
+{fin = [], trans = 121},
+{fin = [], trans = 122},
+{fin = [], trans = 123},
+{fin = [(N 199)], trans = 123},
+{fin = [(N 204)], trans = 35},
+{fin = [(N 187),(N 204)], trans = 0},
+{fin = [(N 2),(N 204)], trans = 127},
+{fin = [(N 2)], trans = 127},
+{fin = [(N 7),(N 204)], trans = 129},
+{fin = [(N 7)], trans = 0},
+{fin = [(N 242)], trans = 0},
+{fin = [(N 242)], trans = 132},
+{fin = [(N 240)], trans = 0},
+{fin = [(N 242)], trans = 134},
+{fin = [(N 235)], trans = 0},
+{fin = [(N 237)], trans = 0},
+{fin = [(N 315)], trans = 0},
+{fin = [(N 313),(N 315)], trans = 0},
+{fin = [(N 305),(N 313),(N 315)], trans = 139},
+{fin = [(N 265)], trans = 0},
+{fin = [], trans = 141},
+{fin = [], trans = 142},
+{fin = [], trans = 143},
+{fin = [], trans = 144},
+{fin = [(N 285)], trans = 0},
+{fin = [(N 262)], trans = 0},
+{fin = [(N 259)], trans = 0},
+{fin = [(N 256)], trans = 0},
+{fin = [(N 253)], trans = 0},
+{fin = [(N 250)], trans = 0},
+{fin = [(N 247)], trans = 0},
+{fin = [], trans = 152},
+{fin = [(N 273)], trans = 0},
+{fin = [(N 269),(N 273)], trans = 0},
+{fin = [(N 291)], trans = 0},
+{fin = [], trans = 156},
+{fin = [], trans = 157},
+{fin = [(N 278)], trans = 0},
+{fin = [(N 288)], trans = 0},
+{fin = [(N 297)], trans = 160},
+{fin = [(N 303)], trans = 161},
+{fin = [(N 303)], trans = 0},
+{fin = [(N 244),(N 313),(N 315)], trans = 0},
+{fin = [(N 310),(N 315)], trans = 164},
+{fin = [(N 310)], trans = 0},
+{fin = [(N 327)], trans = 0},
+{fin = [(N 325),(N 327)], trans = 0},
+{fin = [(N 323),(N 327)], trans = 168},
+{fin = [(N 323)], trans = 168},
+{fin = [(N 320),(N 327)], trans = 170},
+{fin = [(N 320)], trans = 0},
+{fin = [(N 232)], trans = 0},
+{fin = [(N 207),(N 232)], trans = 173},
+{fin = [(N 207)], trans = 173},
+{fin = [(N 232)], trans = 175},
+{fin = [(N 230)], trans = 0},
+{fin = [(N 214)], trans = 0},
+{fin = [(N 212),(N 214)], trans = 178},
+{fin = [(N 212)], trans = 178},
+{fin = [(N 209),(N 214)], trans = 0},
+{fin = [(N 232)], trans = 181},
+{fin = [(N 217),(N 230)], trans = 0},
+{fin = [(N 221),(N 232)], trans = 0},
+{fin = [(N 232)], trans = 184},
+{fin = [(N 221)], trans = 0},
+{fin = [], trans = 184},
+{fin = [(N 223),(N 232)], trans = 187},
+{fin = [(N 223)], trans = 187},
+{fin = [(N 223),(N 232)], trans = 189},
+{fin = [(N 223),(N 230)], trans = 187},
+{fin = [(N 232)], trans = 191},
+{fin = [], trans = 192},
+{fin = [(N 227)], trans = 0}])
+end
+structure StartStates =
+ struct
+ datatype yystartstate = STARTSTATE of int
+
+(* start state definitions *)
+
+val A = STARTSTATE 3;
+val F = STARTSTATE 7;
+val INITIAL = STARTSTATE 1;
+val L = STARTSTATE 9;
+val LL = STARTSTATE 11;
+val LLC = STARTSTATE 13;
+val LLCQ = STARTSTATE 15;
+val S = STARTSTATE 5;
+
+end
+type result = UserDeclarations.lexresult
+ exception LexerError (* raised if illegal leaf action tried *)
+end
+
+type int = Int.int
+fun makeLexer (yyinput: int -> string) =
+let val yygone0:int= ~1
+ val yyb = ref "\n" (* buffer *)
+ val yybl: int ref = ref 1 (*buffer length *)
+ val yybufpos: int ref = ref 1 (* location of next character to use *)
+ val yygone: int ref = ref yygone0 (* position in file of beginning of buffer *)
+ val yydone = ref false (* eof found yet? *)
+ val yybegin: int ref = ref 1 (*Current 'start state' for lexer *)
+
+ val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
+ yybegin := x
+
+fun lex (yyarg as ({source})) =
+let fun continue() : Internal.result =
+ let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0: int) =
+ let fun action (i: int,nil) = raise LexError
+ | action (i,nil::l) = action (i-1,l)
+ | action (i,(node::acts)::l) =
+ case node of
+ Internal.N yyk =>
+ (let fun yymktext() = String.substring(!yyb,i0,i-i0)
+ val yypos: int = i0+ !yygone
+ fun REJECT() = action(i,acts::l)
+ open UserDeclarations Internal.StartStates
+ in (yybufpos := i; case yyk of
+
+ (* Application actions *)
+
+ 13 => (tok (Tokens.PRIM, source, yypos, yypos + 4))
+| 15 => (tok (Tokens.COMMA, source, yypos, yypos + 1))
+| 17 => (tok (Tokens.SEMICOLON, source, yypos, yypos + 1))
+| 185 => let val yytext=yymktext() in tok' (Tokens.FILE, yytext, source, yypos) end
+| 187 => (charlist := [""]
+ ; stringStart := Source.getPos (source, yypos)
+ ; YYBEGIN S
+ ; continue ())
+| 19 => (tok (Tokens.EQUALOP, source, yypos, yypos + 1))
+| 199 => (YYBEGIN L
+ ; commentStart := Source.getPos (source, yypos)
+ ; commentLevel := 1
+ ; continue ())
+| 2 => (continue ())
+| 202 => (YYBEGIN A
+ ; commentLevel := 1
+ ; commentStart := Source.getPos (source, yypos)
+ ; continue ())
+| 204 => (error (source, yypos, yypos + 1, "illegal token") ;
+ continue ())
+| 207 => let val yytext=yymktext() in YYBEGIN LL
+ ; (lineNum := valOf (Int.fromString yytext)
+ ; colNum := 1)
+ handle Overflow => YYBEGIN A
+ ; continue () end
+| 209 => ((* cheat: take n > 0 dots *) continue ())
+| 212 => let val yytext=yymktext() in YYBEGIN LLC
+ ; (colNum := valOf (Int.fromString yytext))
+ handle Overflow => YYBEGIN A
+ ; continue () end
+| 214 => (YYBEGIN LLC; continue ()
+ (* note hack, since ml-lex chokes on the empty string for 0* *))
+| 217 => (YYBEGIN INITIAL
+ ; lineDirective (source, NONE, yypos + 2)
+ ; commentLevel := 0; charlist := []; continue ())
+| 221 => (YYBEGIN LLCQ; continue ())
+| 223 => let val yytext=yymktext() in lineFile := yytext; continue () end
+| 227 => (YYBEGIN INITIAL
+ ; lineDirective (source, SOME (!lineFile), yypos + 3)
+ ; commentLevel := 0; charlist := []; continue ())
+| 23 => (tok (Tokens.ANN, source, yypos, yypos + 3))
+| 230 => (YYBEGIN INITIAL; commentLevel := 0; charlist := []; continue ())
+| 232 => (YYBEGIN A; continue ())
+| 235 => (inc commentLevel; continue ())
+| 237 => (Source.newline (source, yypos) ; continue ())
+| 240 => (dec commentLevel
+ ; if 0 = !commentLevel then YYBEGIN INITIAL else ()
+ ; continue ())
+| 242 => (continue ())
+| 244 => (let
+ val s = concat (rev (!charlist))
+ val _ = charlist := nil
+ fun make (t, v) =
+ t (v, !stringStart, Source.getPos (source, yypos + 1))
+ in YYBEGIN INITIAL
+ ; make (Tokens.STRING, s)
+ end)
+| 247 => (addChar #"\a"; continue ())
+| 250 => (addChar #"\b"; continue ())
+| 253 => (addChar #"\f"; continue ())
+| 256 => (addChar #"\n"; continue ())
+| 259 => (addChar #"\r"; continue ())
+| 262 => (addChar #"\t"; continue ())
+| 265 => (addChar #"\v"; continue ())
+| 269 => let val yytext=yymktext() in addChar (Char.chr(Char.ord(String.sub(yytext, 2))
+ -Char.ord #"@"))
+ ; continue () end
+| 27 => (tok (Tokens.AND, source, yypos, yypos + 3))
+| 273 => (error (source, yypos, yypos + 2,
+ "illegal control escape; must be one of @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_")
+ ; continue ())
+| 278 => let val yytext=yymktext() in let
+ val x =
+ Char.ord(String.sub(yytext, 1)) * 100
+ + Char.ord(String.sub(yytext, 2)) * 10
+ + Char.ord(String.sub(yytext, 3))
+ - (Char.ord #"0") * 111
+ in (if x > 255
+ then stringError (source, yypos,
+ "illegal ascii escape")
+ else addChar(Char.chr x);
+ continue ())
+ end end
+| 285 => let val yytext=yymktext() in let
+ val x =
+ StringCvt.scanString
+ (Pervasive.Int.scan StringCvt.HEX)
+ (String.substring (yytext, 2, 4))
+ fun err () =
+ stringError (source, yypos,
+ "illegal unicode escape")
+ in (case x of
+ SOME x => if x > 255
+ then err()
+ else addChar(Char.chr x)
+ | _ => err())
+ ; continue ()
+ end end
+| 288 => (addString "\""; continue ())
+| 291 => (addString "\\"; continue ())
+| 297 => (YYBEGIN F; continue ())
+| 303 => (Source.newline (source, yypos) ; YYBEGIN F ; continue ())
+| 305 => (stringError (source, yypos, "illegal string escape")
+ ; continue ())
+| 31 => (tok (Tokens.BAS, source, yypos, yypos + 3))
+| 310 => (Source.newline (source, yypos)
+ ; stringError (source, yypos, "unclosed string")
+ ; continue ())
+| 313 => let val yytext=yymktext() in addString yytext; continue () end
+| 315 => (stringError (source, yypos + 1, "illegal character in string")
+ ; continue ())
+| 320 => (Source.newline (source, yypos) ; continue ())
+| 323 => (continue ())
+| 325 => (YYBEGIN S
+ ; stringStart := Source.getPos (source, yypos)
+ ; continue ())
+| 327 => (stringError (source, yypos, "unclosed string")
+ ; continue ())
+| 37 => (tok (Tokens.BASIS, source, yypos, yypos + 5))
+| 41 => (tok (Tokens.END, source, yypos, yypos + 3))
+| 49 => (tok (Tokens.FUNCTOR, source, yypos, yypos + 7))
+| 52 => (tok (Tokens.IN, source, yypos, yypos + 2))
+| 56 => (tok (Tokens.LET, source, yypos, yypos + 3))
+| 62 => (tok (Tokens.LOCAL, source, yypos, yypos + 5))
+| 67 => (tok (Tokens.OPEN, source, yypos, yypos + 4))
+| 7 => (Source.newline (source, yypos); continue ())
+| 77 => (tok (Tokens.SIGNATURE, source, yypos, yypos + 9))
+| 87 => (tok (Tokens.STRUCTURE, source, yypos, yypos + 9))
+| 90 => let val yytext=yymktext() in tok' (Tokens.ID, yytext, source, yypos) end
+| _ => raise Internal.LexerError
+
+ ) end )
+
+ val {fin,trans} = Vector.sub (Internal.tab, s)
+ val NewAcceptingLeaves = fin::AcceptingLeaves
+ in if l = !yybl then
+ if trans = #trans(Vector.sub(Internal.tab,0))
+ then action(l,NewAcceptingLeaves
+) else let val newchars= if !yydone then "" else yyinput 1024
+ in if (String.size newchars)=0
+ then (yydone := true;
+ if (l=i0) then UserDeclarations.eof yyarg
+ else action(l,NewAcceptingLeaves))
+ else (if i0=l then yyb := newchars
+ else yyb := String.substring(!yyb,i0,l-i0)^newchars;
+ yygone := !yygone+i0;
+ yybl := String.size (!yyb);
+ scan (s,AcceptingLeaves,l-i0,0))
+ end
+ else let val NewChar = Char.ord (CharVector.sub (!yyb,l))
+ val NewChar = if NewChar<128 then NewChar else 128
+ val NewState = Char.ord (CharVector.sub (trans,NewChar))
+ in if NewState=0 then action(l,NewAcceptingLeaves)
+ else scan(NewState,NewAcceptingLeaves,l+1,i0)
+ end
+ end
+(*
+ val start= if String.substring(!yyb,!yybufpos-1,1)="\n"
+then !yybegin+1 else !yybegin
+*)
+ in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
+ end
+in continue end
+ in lex
+ end
+end
diff --git a/lang/mlton/files/patch-Makefile b/lang/mlton/files/patch-Makefile
new file mode 100644
index 000000000000..7a88aa70a2c1
--- /dev/null
+++ b/lang/mlton/files/patch-Makefile
@@ -0,0 +1,22 @@
+--- Makefile.orig 2007-08-27 07:04:14.000000000 +1000
++++ Makefile 2008-04-28 10:23:28.000000000 +1000
+@@ -34,7 +34,11 @@
+ PATH := $(BIN):$(SRC)/bin:$(shell echo $$PATH)
+ CP := /bin/cp -fpR
+ GZIP := gzip --force --best
++ifeq ($(TARGET), mingw32)
++RANLIB := $(TARGET)-ranlib
++else
+ RANLIB := ranlib
++endif
+
+ # If we're compiling with another version of MLton, then we want to do
+ # another round of compilation so that we get a MLton built without
+@@ -410,6 +414,7 @@
+ install-no-docs:
+ mkdir -p "$(TLIB)" "$(TBIN)" "$(TMAN)"
+ $(CP) "$(LIB)/." "$(TLIB)/"
++ -rm "$(TLIB)/mlton.x86-bsd"
+ sed "/^lib=/s;.*;lib='$(prefix)/$(ULIB)';" \
+ <"$(BIN)/mlton" >"$(TBIN)/mlton"
+ chmod a+x "$(TBIN)/mlton"
diff --git a/lang/mlton/files/patch-bin-mlton_script b/lang/mlton/files/patch-bin-mlton_script
new file mode 100644
index 000000000000..88f9a5bb587a
--- /dev/null
+++ b/lang/mlton/files/patch-bin-mlton_script
@@ -0,0 +1,18 @@
+--- bin/mlton-script.orig 2008-04-22 21:15:23.000000000 +1000
++++ bin/mlton-script 2008-04-22 21:18:33.000000000 +1000
+@@ -19,14 +19,7 @@
+ mlton="$lib/mlton-compile$exe"
+ world="$lib/world.mlton"
+ nj='sml'
+-# Try to use the SML/NJ .arch-n-opsys
+-if .arch-n-opsys >/dev/null 2>&1; then
+- eval `.arch-n-opsys`
+- njHeap="$lib/mlton.$HEAP_SUFFIX"
+- unset `.arch-n-opsys | sed 's#=[^ ]*##g'`
+-else
+- njHeap="$lib/mlton.$HOST_ARCH-$HOST_OS"
+-fi
++njHeap="$lib/mlton.x86-bsd"
+
+ declare -a rargs
+ case "$1" in
diff --git a/lang/mlton/files/patch-runtime-Makefile b/lang/mlton/files/patch-runtime-Makefile
new file mode 100644
index 000000000000..4c4ed2be0b86
--- /dev/null
+++ b/lang/mlton/files/patch-runtime-Makefile
@@ -0,0 +1,84 @@
+--- runtime/Makefile.orig 2007-08-27 07:03:54.000000000 +1000
++++ runtime/Makefile 2008-04-28 10:19:06.000000000 +1000
+@@ -11,11 +11,24 @@
+ TARGET := self
+ TARGET_ARCH := $(shell ../bin/host-arch)
+ TARGET_OS := $(shell ../bin/host-os)
++
++ifeq ($(TARGET), self)
++GCC := gcc
++else
++GCC := $(TARGET)-gcc
++endif
++
++ifeq ($(TARGET_OS), mingw)
++RUN := wine
++else
++RUN :=
++endif
++
+ GCC_MAJOR_VERSION := \
+- $(shell gcc -v 2>&1 | grep 'gcc version' | \
++ $(shell $(GCC) -v 2>&1 | grep 'gcc version' | \
+ sed 's/.*gcc version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1/')
+ GCC_MINOR_VERSION := \
+- $(shell gcc -v 2>&1 | grep 'gcc version' | \
++ $(shell $(GCC) -v 2>&1 | grep 'gcc version' | \
+ sed 's/.*gcc version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\2/')
+ GCC_VERSION := $(GCC_MAJOR_VERSION).$(GCC_MINOR_VERSION)
+
+@@ -96,10 +109,9 @@
+ else
+ AR := $(TARGET)-ar rc
+ RANLIB := $(TARGET)-ranlib
+-FLAGS += -b $(TARGET)
+ endif
+
+-CC := gcc -std=gnu99
++CC := $(GCC) -std=gnu99
+ CPPFLAGS :=
+ CFLAGS := -I. -Iplatform $(FLAGS)
+ OPTCFLAGS := $(CFLAGS) $(CPPFLAGS) $(OPTFLAGS)
+@@ -247,7 +259,7 @@
+ cd gdtoa && $(CC) -o arithchk.out arithchk.c
+
+ gdtoa/arith.h: gdtoa/arithchk.out
+- cd gdtoa && ./arithchk.out >arith.h
++ cd gdtoa && $(RUN) ./arithchk.out >arith.h
+
+ libmlton.a: $(OBJS)
+ $(AR) libmlton.a $(OBJS)
+@@ -265,7 +277,7 @@
+ gen/c-types.h gen/c-types.sml gen/ml-types.h: gen/gen-types.c util.h util.o
+ $(CC) $(OPTCFLAGS) $(WARNCFLAGS) -o gen/gen-types gen/gen-types.c util.o
+ rm -f gen/c-types.h gen/c-types.sml gen/ml-types.h
+- cd gen && ./gen-types
++ cd gen && $(RUN) ./gen-types
+ rm -f gen/gen-types$(EXE)
+
+ c-types.h ml-types.h: gen/c-types.h gen/ml-types.h
+@@ -276,7 +288,7 @@
+ gen/basis-ffi.h gen/basis-ffi.sml: gen/gen-basis-ffi.sml gen/basis-ffi.def
+ mlton -output gen/gen-basis-ffi gen/gen-basis-ffi.sml
+ rm -f gen/basis-ffi.h gen/basis-ffi.sml
+- cd gen && ./gen-basis-ffi
++ cd gen && $(RUN) ./gen-basis-ffi
+ rm -f gen/gen-basis-ffi
+
+ basis-ffi.h: gen/basis-ffi.h
+@@ -286,13 +298,13 @@
+ gen/sizes: gen/gen-sizes.c libmlton.a
+ $(CC) $(OPTCFLAGS) $(WARNCFLAGS) -o gen/gen-sizes -I. -L. -lmlton gen/gen-sizes.c util.o
+ rm -f gen/sizes
+- cd gen && ./gen-sizes
++ cd gen && $(RUN) ./gen-sizes
+ rm -f gen/gen-sizes$(EXE)
+
+ bytecode/opcodes: bytecode/print-opcodes.c bytecode/opcode.h
+ $(CC) $(OPTCFLAGS) $(WARNCFLAGS) -o bytecode/print-opcodes bytecode/print-opcodes.c
+ rm -f bytecode/opcodes
+- cd bytecode && ./print-opcodes > opcodes
++ cd bytecode && $(RUN) ./print-opcodes > opcodes
+ rm -f bytecode/print-opcodes$(EXE)
+
+
diff --git a/lang/mlton/files/patch-runtime-cenv.h b/lang/mlton/files/patch-runtime-cenv.h
new file mode 100644
index 000000000000..3d3ebd4d3cd2
--- /dev/null
+++ b/lang/mlton/files/patch-runtime-cenv.h
@@ -0,0 +1,11 @@
+--- runtime/cenv.h.orig 2008-04-27 10:56:05.000000000 +1000
++++ runtime/cenv.h 2008-04-27 10:56:20.000000000 +1000
+@@ -116,7 +116,7 @@
+ #error unknown platform arch
+ #endif
+
+-#include "gmp.h"
++#include "/usr/local/include/gmp.h"
+
+ COMPILE_TIME_ASSERT(sizeof_uintptr_t__is__sizeof_voidStar,
+ sizeof(uintptr_t) == sizeof(void*));
diff --git a/lang/mlton/files/patch-runtime-mingw.c b/lang/mlton/files/patch-runtime-mingw.c
new file mode 100644
index 000000000000..2d1aaa9be883
--- /dev/null
+++ b/lang/mlton/files/patch-runtime-mingw.c
@@ -0,0 +1,43 @@
+--- runtime/platform/mingw.c.orig 2008-04-27 11:10:10.000000000 +1000
++++ runtime/platform/mingw.c 2008-04-27 11:10:33.000000000 +1000
+@@ -54,40 +54,6 @@
+ }
+
+ /* ------------------------------------------------- */
+-/* Date */
+-/* ------------------------------------------------- */
+-
+-#ifndef __GNUC__
+-#define EPOCHFILETIME (116444736000000000i64)
+-#else
+-#define EPOCHFILETIME (116444736000000000LL)
+-#endif
+-
+-/* Based on notes by Wu Yongwei:
+- * http://mywebpage.netscape.com/yongweiwutime.htm
+- */
+-int gettimeofday (struct timeval *tv, struct timezone *tz) {
+- FILETIME ft;
+- LARGE_INTEGER li;
+- __int64 t;
+- static bool tzInit = FALSE;
+-
+- unless (tzInit) {
+- tzInit = TRUE;
+- _tzset();
+- }
+- GetSystemTimeAsFileTime (&ft);
+- li.LowPart = ft.dwLowDateTime;
+- li.HighPart = ft.dwHighDateTime;
+- t = li.QuadPart;
+- t -= EPOCHFILETIME;
+- t /= 10;
+- tv->tv_sec = (long)(t / 1000000);
+- tv->tv_usec = (long)(t % 1000000);
+- return 0;
+-}
+-
+-/* ------------------------------------------------- */
+ /* MLton.Itimer */
+ /* ------------------------------------------------- */
+
diff --git a/lang/mlton/files/patch-runtime-mingw.h b/lang/mlton/files/patch-runtime-mingw.h
new file mode 100644
index 000000000000..fa5e0f317ccf
--- /dev/null
+++ b/lang/mlton/files/patch-runtime-mingw.h
@@ -0,0 +1,20 @@
+--- runtime/platform/mingw.h.orig 2008-04-27 10:54:07.000000000 +1000
++++ runtime/platform/mingw.h 2008-04-27 10:54:19.000000000 +1000
+@@ -85,17 +85,6 @@
+ #define SHUT_RDWR SD_BOTH
+
+ /* ------------------------------------------------- */
+-/* Date */
+-/* ------------------------------------------------- */
+-
+-struct timezone {
+- int tz_dsttime;
+- int tz_minuteswest;
+-};
+-
+-int gettimeofday (struct timeval *tv, struct timezone *tz);
+-
+-/* ------------------------------------------------- */
+ /* MLton.Itimer */
+ /* ------------------------------------------------- */
+
diff --git a/lang/mlton/files/upgrade-basis.sml b/lang/mlton/files/upgrade-basis.sml
new file mode 100644
index 000000000000..7235efc7d47b
--- /dev/null
+++ b/lang/mlton/files/upgrade-basis.sml
@@ -0,0 +1,68 @@
+structure MLton =
+ struct
+ open MLton
+
+ structure Platform =
+ struct
+ fun peek (l, f) = List.find f l
+ fun omap (opt, f) = Option.map f opt
+ val toLower = String.translate (str o Char.toLower)
+
+ structure Arch =
+ struct
+ datatype t = Alpha | AMD64 | ARM | HPPA | IA64 | m68k |
+ MIPS | PowerPC | S390 | Sparc | X86
+
+ val all = [(Alpha, "Alpha"),
+ (AMD64, "AMD64"),
+ (ARM, "ARM"),
+ (HPPA, "HPPA"),
+ (IA64, "IA64"),
+ (m68k, "m68k"),
+ (MIPS, "MIPS"),
+ (PowerPC, "PowerPC"),
+ (S390, "S390"),
+ (Sparc, "Sparc"),
+ (X86, "X86")]
+
+ fun fromString s =
+ let
+ val s = toLower s
+ in
+ omap (peek (all, fn (_, s') => s = toLower s'), #1)
+ end
+
+ val host = X86
+
+ fun toString a = #2 (valOf (peek (all, fn (a', _) => a = a')))
+ end
+
+ structure OS =
+ struct
+ datatype t = AIX | Cygwin | Darwin | FreeBSD | HPUX | Linux
+ | MinGW | NetBSD | OpenBSD | Solaris
+
+ val all = [(AIX, "AIX"),
+ (Cygwin, "Cygwin"),
+ (Darwin, "Darwin"),
+ (FreeBSD, "FreeBSD"),
+ (HPUX, "HPUX"),
+ (Linux, "Linux"),
+ (MinGW, "MinGW"),
+ (NetBSD, "NetBSD"),
+ (OpenBSD, "OpenBSD"),
+ (Solaris, "Solaris")]
+
+ fun fromString s =
+ let
+ val s = toLower s
+ in
+ omap (peek (all, fn (_, s') => s = toLower s'), #1)
+ end
+
+ val host = FreeBSD
+
+ fun toString a = #2 (valOf (peek (all, fn (a', _) => a = a')))
+ end
+ end
+ end
diff --git a/lang/mlton/files/yacc.grm.sig b/lang/mlton/files/yacc.grm.sig
new file mode 100644
index 000000000000..48dd896fbf18
--- /dev/null
+++ b/lang/mlton/files/yacc.grm.sig
@@ -0,0 +1,54 @@
+signature Mlyacc_TOKENS =
+sig
+type ('a,'b) token
+type svalue
+val BOGUS_VALUE: 'a * 'a -> (svalue,'a) token
+val UNKNOWN: (string) * 'a * 'a -> (svalue,'a) token
+val VALUE: 'a * 'a -> (svalue,'a) token
+val VERBOSE: 'a * 'a -> (svalue,'a) token
+val TYVAR: (string) * 'a * 'a -> (svalue,'a) token
+val TERM: 'a * 'a -> (svalue,'a) token
+val START: 'a * 'a -> (svalue,'a) token
+val SUBST: 'a * 'a -> (svalue,'a) token
+val RPAREN: 'a * 'a -> (svalue,'a) token
+val RBRACE: 'a * 'a -> (svalue,'a) token
+val PROG: (string) * 'a * 'a -> (svalue,'a) token
+val PREFER: 'a * 'a -> (svalue,'a) token
+val PREC_TAG: 'a * 'a -> (svalue,'a) token
+val PREC: (Header.prec) * 'a * 'a -> (svalue,'a) token
+val PERCENT_TOKEN_SIG_INFO: 'a * 'a -> (svalue,'a) token
+val PERCENT_ARG: 'a * 'a -> (svalue,'a) token
+val PERCENT_POS: 'a * 'a -> (svalue,'a) token
+val PERCENT_PURE: 'a * 'a -> (svalue,'a) token
+val PERCENT_EOP: 'a * 'a -> (svalue,'a) token
+val OF: 'a * 'a -> (svalue,'a) token
+val NOSHIFT: 'a * 'a -> (svalue,'a) token
+val NONTERM: 'a * 'a -> (svalue,'a) token
+val NODEFAULT: 'a * 'a -> (svalue,'a) token
+val NAME: 'a * 'a -> (svalue,'a) token
+val LPAREN: 'a * 'a -> (svalue,'a) token
+val LBRACE: 'a * 'a -> (svalue,'a) token
+val KEYWORD: 'a * 'a -> (svalue,'a) token
+val INT: (string) * 'a * 'a -> (svalue,'a) token
+val PERCENT_HEADER: 'a * 'a -> (svalue,'a) token
+val IDDOT: (string) * 'a * 'a -> (svalue,'a) token
+val ID: (string*int) * 'a * 'a -> (svalue,'a) token
+val HEADER: (string) * 'a * 'a -> (svalue,'a) token
+val FOR: 'a * 'a -> (svalue,'a) token
+val EOF: 'a * 'a -> (svalue,'a) token
+val DELIMITER: 'a * 'a -> (svalue,'a) token
+val COMMA: 'a * 'a -> (svalue,'a) token
+val COLON: 'a * 'a -> (svalue,'a) token
+val CHANGE: 'a * 'a -> (svalue,'a) token
+val BAR: 'a * 'a -> (svalue,'a) token
+val BLOCK: 'a * 'a -> (svalue,'a) token
+val ASTERISK: 'a * 'a -> (svalue,'a) token
+val ARROW: 'a * 'a -> (svalue,'a) token
+end
+signature Mlyacc_LRVALS=
+sig
+structure Tokens : Mlyacc_TOKENS
+structure ParserData:PARSER_DATA
+sharing type ParserData.Token.token = Tokens.token
+sharing type ParserData.svalue = Tokens.svalue
+end
diff --git a/lang/mlton/files/yacc.grm.sml b/lang/mlton/files/yacc.grm.sml
new file mode 100644
index 000000000000..afb4ecc1b6b5
--- /dev/null
+++ b/lang/mlton/files/yacc.grm.sml
@@ -0,0 +1,1053 @@
+
+
+functor MlyaccLrValsFun(structure Hdr : HEADER
+ where type prec = Header.prec
+ structure Token : TOKEN)
+ =
+struct
+structure ParserData=
+struct
+structure Header =
+struct
+(* ML-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi *)
+
+(* parser for the ML parser generator *)
+
+open Hdr
+
+end
+structure LrTable = Token.LrTable
+structure Token = Token
+local open LrTable in
+val table=let val actionRows =
+"\
+\\001\000\001\000\076\000\000\000\
+\\001\000\005\000\025\000\008\000\024\000\014\000\023\000\016\000\022\000\
+\\019\000\021\000\020\000\020\000\021\000\019\000\022\000\018\000\
+\\024\000\017\000\025\000\016\000\026\000\015\000\027\000\014\000\
+\\028\000\013\000\029\000\012\000\031\000\011\000\035\000\010\000\
+\\036\000\009\000\037\000\008\000\039\000\007\000\040\000\006\000\000\000\
+\\001\000\006\000\063\000\000\000\
+\\001\000\006\000\074\000\000\000\
+\\001\000\006\000\086\000\000\000\
+\\001\000\006\000\098\000\000\000\
+\\001\000\007\000\085\000\033\000\084\000\000\000\
+\\001\000\009\000\000\000\000\000\
+\\001\000\010\000\061\000\000\000\
+\\001\000\011\000\003\000\000\000\
+\\001\000\012\000\026\000\000\000\
+\\001\000\012\000\028\000\000\000\
+\\001\000\012\000\029\000\000\000\
+\\001\000\012\000\032\000\000\000\
+\\001\000\012\000\044\000\013\000\043\000\000\000\
+\\001\000\012\000\044\000\013\000\043\000\017\000\042\000\032\000\041\000\
+\\038\000\040\000\000\000\
+\\001\000\012\000\048\000\000\000\
+\\001\000\012\000\053\000\000\000\
+\\001\000\012\000\071\000\015\000\070\000\000\000\
+\\001\000\012\000\071\000\015\000\070\000\033\000\069\000\000\000\
+\\001\000\012\000\077\000\000\000\
+\\001\000\012\000\080\000\000\000\
+\\001\000\012\000\101\000\000\000\
+\\001\000\032\000\036\000\000\000\
+\\001\000\032\000\037\000\000\000\
+\\001\000\032\000\050\000\000\000\
+\\001\000\032\000\057\000\000\000\
+\\001\000\032\000\100\000\000\000\
+\\001\000\032\000\104\000\000\000\
+\\106\000\012\000\053\000\000\000\
+\\107\000\000\000\
+\\108\000\000\000\
+\\109\000\004\000\058\000\000\000\
+\\110\000\004\000\058\000\000\000\
+\\111\000\000\000\
+\\112\000\000\000\
+\\113\000\000\000\
+\\114\000\000\000\
+\\115\000\000\000\
+\\116\000\000\000\
+\\117\000\000\000\
+\\118\000\000\000\
+\\119\000\000\000\
+\\120\000\000\000\
+\\121\000\000\000\
+\\122\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\123\000\000\000\
+\\124\000\000\000\
+\\125\000\000\000\
+\\126\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\127\000\000\000\
+\\128\000\000\000\
+\\129\000\004\000\075\000\000\000\
+\\130\000\000\000\
+\\131\000\000\000\
+\\132\000\004\000\060\000\000\000\
+\\133\000\000\000\
+\\134\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\135\000\023\000\091\000\000\000\
+\\136\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\137\000\023\000\059\000\000\000\
+\\138\000\004\000\094\000\000\000\
+\\139\000\000\000\
+\\140\000\000\000\
+\\141\000\000\000\
+\\142\000\012\000\034\000\000\000\
+\\143\000\000\000\
+\\144\000\000\000\
+\\145\000\000\000\
+\\146\000\000\000\
+\\147\000\000\000\
+\\148\000\000\000\
+\\149\000\000\000\
+\\150\000\000\000\
+\\151\000\012\000\044\000\013\000\043\000\000\000\
+\\152\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\153\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\154\000\001\000\066\000\002\000\065\000\012\000\044\000\013\000\043\000\000\000\
+\\155\000\000\000\
+\\156\000\000\000\
+\\157\000\000\000\
+\\158\000\000\000\
+\\159\000\000\000\
+\\160\000\030\000\096\000\000\000\
+\"
+val actionRowNumbers =
+"\009\000\031\000\001\000\030\000\
+\\010\000\046\000\011\000\012\000\
+\\013\000\065\000\065\000\023\000\
+\\024\000\015\000\048\000\065\000\
+\\065\000\011\000\047\000\016\000\
+\\065\000\025\000\017\000\065\000\
+\\026\000\032\000\060\000\035\000\
+\\055\000\040\000\008\000\038\000\
+\\065\000\034\000\043\000\002\000\
+\\049\000\073\000\068\000\071\000\
+\\019\000\014\000\078\000\036\000\
+\\041\000\033\000\044\000\037\000\
+\\042\000\029\000\063\000\003\000\
+\\052\000\039\000\000\000\050\000\
+\\020\000\015\000\013\000\021\000\
+\\064\000\015\000\072\000\015\000\
+\\015\000\006\000\004\000\070\000\
+\\081\000\080\000\079\000\062\000\
+\\065\000\065\000\065\000\058\000\
+\\059\000\054\000\056\000\045\000\
+\\074\000\075\000\069\000\018\000\
+\\015\000\061\000\083\000\051\000\
+\\053\000\015\000\005\000\077\000\
+\\065\000\027\000\022\000\057\000\
+\\015\000\083\000\066\000\082\000\
+\\076\000\028\000\067\000\007\000"
+val gotoT =
+"\
+\\001\000\103\000\000\000\
+\\006\000\002\000\000\000\
+\\005\000\003\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\002\000\025\000\000\000\
+\\000\000\
+\\013\000\029\000\014\000\028\000\000\000\
+\\003\000\031\000\000\000\
+\\003\000\033\000\000\000\
+\\000\000\
+\\000\000\
+\\007\000\037\000\017\000\036\000\000\000\
+\\000\000\
+\\003\000\043\000\000\000\
+\\003\000\044\000\000\000\
+\\002\000\045\000\000\000\
+\\000\000\
+\\000\000\
+\\003\000\047\000\000\000\
+\\000\000\
+\\010\000\050\000\011\000\049\000\000\000\
+\\003\000\054\000\015\000\053\000\016\000\052\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\060\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\007\000\062\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\004\000\066\000\008\000\065\000\000\000\
+\\007\000\070\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\010\000\071\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\007\000\037\000\017\000\076\000\000\000\
+\\013\000\077\000\014\000\028\000\000\000\
+\\000\000\
+\\000\000\
+\\007\000\037\000\017\000\079\000\000\000\
+\\000\000\
+\\007\000\037\000\017\000\080\000\000\000\
+\\007\000\037\000\017\000\081\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\\003\000\086\000\009\000\085\000\000\000\
+\\003\000\054\000\015\000\087\000\016\000\052\000\000\000\
+\\003\000\088\000\000\000\
+\\000\000\
+\\007\000\062\000\000\000\
+\\000\000\
+\\000\000\
+\\007\000\062\000\000\000\
+\\007\000\062\000\000\000\
+\\007\000\062\000\000\000\
+\\000\000\
+\\004\000\090\000\000\000\
+\\007\000\037\000\017\000\091\000\000\000\
+\\000\000\
+\\012\000\093\000\000\000\
+\\000\000\
+\\000\000\
+\\007\000\037\000\017\000\095\000\000\000\
+\\000\000\
+\\007\000\062\000\000\000\
+\\003\000\097\000\000\000\
+\\000\000\
+\\000\000\
+\\007\000\062\000\000\000\
+\\007\000\037\000\017\000\100\000\000\000\
+\\012\000\101\000\000\000\
+\\000\000\
+\\000\000\
+\\007\000\062\000\000\000\
+\\000\000\
+\\000\000\
+\\000\000\
+\"
+val numstates = 104
+val numrules = 55
+val s = ref "" and index = ref 0
+val string_to_int = fn () =>
+let val i = !index
+in index := i+2; Char.ord(String.sub(!s,i)) + Char.ord(String.sub(!s,i+1)) * 256
+end
+val string_to_list = fn s' =>
+ let val len = String.size s'
+ fun f () =
+ if !index < len then string_to_int() :: f()
+ else nil
+ in index := 0; s := s'; f ()
+ end
+val string_to_pairlist = fn (conv_key,conv_entry) =>
+ let fun f () =
+ case string_to_int()
+ of 0 => EMPTY
+ | n => PAIR(conv_key (n-1),conv_entry (string_to_int()),f())
+ in f
+ end
+val string_to_pairlist_default = fn (conv_key,conv_entry) =>
+ let val conv_row = string_to_pairlist(conv_key,conv_entry)
+ in fn () =>
+ let val default = conv_entry(string_to_int())
+ val row = conv_row()
+ in (row,default)
+ end
+ end
+val string_to_table = fn (convert_row,s') =>
+ let val len = String.size s'
+ fun f ()=
+ if !index < len then convert_row() :: f()
+ else nil
+ in (s := s'; index := 0; f ())
+ end
+local
+ val memo = Array.array(numstates+numrules,ERROR)
+ val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1))
+ fun f i =
+ if i=numstates then g i
+ else (Array.update(memo,i,SHIFT (STATE i)); f (i+1))
+ in f 0 handle Subscript => ()
+ end
+in
+val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub(memo,(j-2))
+end
+val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
+val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
+val actionRowNumbers = string_to_list actionRowNumbers
+val actionT = let val actionRowLookUp=
+let val a=Array.fromList(actionRows) in fn i=>Array.sub(a,i) end
+in Array.fromList(map actionRowLookUp actionRowNumbers)
+end
+in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
+numStates=numstates,initialState=STATE 0}
+end
+end
+local open Header in
+type pos = int
+type arg = Hdr.inputSource
+structure MlyValue =
+struct
+datatype svalue = VOID | ntVOID of unit -> unit
+ | UNKNOWN of unit -> (string) | TYVAR of unit -> (string)
+ | PROG of unit -> (string) | PREC of unit -> (Header.prec)
+ | INT of unit -> (string) | IDDOT of unit -> (string)
+ | ID of unit -> (string*int) | HEADER of unit -> (string)
+ | TY of unit -> (string)
+ | CHANGE_DEC of unit -> ( ( Hdr.symbol list * Hdr.symbol list ) )
+ | CHANGE_DECL of unit -> ( ( Hdr.symbol list * Hdr.symbol list ) list)
+ | SUBST_DEC of unit -> ( ( Hdr.symbol list * Hdr.symbol list ) )
+ | SUBST_DECL of unit -> ( ( Hdr.symbol list * Hdr.symbol list ) list)
+ | G_RULE_PREC of unit -> (Hdr.symbol option)
+ | G_RULE_LIST of unit -> (Hdr.rule list)
+ | G_RULE of unit -> (Hdr.rule list)
+ | RHS_LIST of unit -> ({ rhs:Hdr.symbol list,code:string,prec:Hdr.symbol option } list)
+ | RECORD_LIST of unit -> (string) | QUAL_ID of unit -> (string)
+ | MPC_DECLS of unit -> (Hdr.declData)
+ | MPC_DECL of unit -> (Hdr.declData) | LABEL of unit -> (string)
+ | ID_LIST of unit -> (Hdr.symbol list)
+ | CONSTR_LIST of unit -> ( ( Hdr.symbol * Hdr.ty option ) list)
+ | BEGIN of unit -> (string*Hdr.declData* ( Hdr.rule list ) )
+end
+type svalue = MlyValue.svalue
+type result = string*Hdr.declData* ( Hdr.rule list )
+end
+structure EC=
+struct
+open LrTable
+infix 5 $$
+fun x $$ y = y::x
+val is_keyword =
+fn _ => false
+val preferred_change : (term list * term list) list =
+nil
+val noShift =
+fn (T 8) => true | _ => false
+val showTerminal =
+fn (T 0) => "ARROW"
+ | (T 1) => "ASTERISK"
+ | (T 2) => "BLOCK"
+ | (T 3) => "BAR"
+ | (T 4) => "CHANGE"
+ | (T 5) => "COLON"
+ | (T 6) => "COMMA"
+ | (T 7) => "DELIMITER"
+ | (T 8) => "EOF"
+ | (T 9) => "FOR"
+ | (T 10) => "HEADER"
+ | (T 11) => "ID"
+ | (T 12) => "IDDOT"
+ | (T 13) => "PERCENT_HEADER"
+ | (T 14) => "INT"
+ | (T 15) => "KEYWORD"
+ | (T 16) => "LBRACE"
+ | (T 17) => "LPAREN"
+ | (T 18) => "NAME"
+ | (T 19) => "NODEFAULT"
+ | (T 20) => "NONTERM"
+ | (T 21) => "NOSHIFT"
+ | (T 22) => "OF"
+ | (T 23) => "PERCENT_EOP"
+ | (T 24) => "PERCENT_PURE"
+ | (T 25) => "PERCENT_POS"
+ | (T 26) => "PERCENT_ARG"
+ | (T 27) => "PERCENT_TOKEN_SIG_INFO"
+ | (T 28) => "PREC"
+ | (T 29) => "PREC_TAG"
+ | (T 30) => "PREFER"
+ | (T 31) => "PROG"
+ | (T 32) => "RBRACE"
+ | (T 33) => "RPAREN"
+ | (T 34) => "SUBST"
+ | (T 35) => "START"
+ | (T 36) => "TERM"
+ | (T 37) => "TYVAR"
+ | (T 38) => "VERBOSE"
+ | (T 39) => "VALUE"
+ | (T 40) => "UNKNOWN"
+ | (T 41) => "BOGUS_VALUE"
+ | _ => "bogus-term"
+local open Header in
+val errtermvalue=
+fn _ => MlyValue.VOID
+end
+val terms : term list = nil
+ $$ (T 41) $$ (T 39) $$ (T 38) $$ (T 36) $$ (T 35) $$ (T 34) $$ (T 33)
+ $$ (T 32) $$ (T 30) $$ (T 29) $$ (T 27) $$ (T 26) $$ (T 25) $$ (T 24)
+ $$ (T 23) $$ (T 22) $$ (T 21) $$ (T 20) $$ (T 19) $$ (T 18) $$ (T 17)
+ $$ (T 16) $$ (T 15) $$ (T 13) $$ (T 9) $$ (T 8) $$ (T 7) $$ (T 6) $$
+(T 5) $$ (T 4) $$ (T 3) $$ (T 2) $$ (T 1) $$ (T 0)end
+structure Actions =
+struct
+type int = Int.int
+exception mlyAction of int
+local open Header in
+val actions =
+fn (i392:int,defaultPos,stack,
+ (inputSource):arg) =>
+case (i392,stack)
+of ( 0, ( ( _, ( MlyValue.G_RULE_LIST G_RULE_LIST1, _,
+G_RULE_LIST1right)) :: _ :: ( _, ( MlyValue.MPC_DECLS MPC_DECLS1, _, _
+)) :: ( _, ( MlyValue.HEADER HEADER1, HEADER1left, _)) :: rest671)) =>
+ let val result = MlyValue.BEGIN (fn _ => let val (HEADER as HEADER1
+) = HEADER1 ()
+ val (MPC_DECLS as MPC_DECLS1) = MPC_DECLS1 ()
+ val (G_RULE_LIST as G_RULE_LIST1) = G_RULE_LIST1 ()
+ in (HEADER,MPC_DECLS,rev G_RULE_LIST)
+end)
+ in ( LrTable.NT 0, ( result, HEADER1left, G_RULE_LIST1right), rest671
+)
+end
+| ( 1, ( ( _, ( MlyValue.MPC_DECL MPC_DECL1, MPC_DECLleft,
+MPC_DECL1right)) :: ( _, ( MlyValue.MPC_DECLS MPC_DECLS1,
+MPC_DECLS1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECLS (fn _ => let val (MPC_DECLS as MPC_DECLS1) =
+MPC_DECLS1 ()
+ val (MPC_DECL as MPC_DECL1) = MPC_DECL1 ()
+ in (join_decls(MPC_DECLS,MPC_DECL,inputSource,MPC_DECLleft))
+end)
+ in ( LrTable.NT 5, ( result, MPC_DECLS1left, MPC_DECL1right), rest671
+)
+end
+| ( 2, ( rest671)) => let val result = MlyValue.MPC_DECLS (fn _ => (
+DECL {prec=nil,nonterm=NONE,term=NONE,eop=nil,control=nil,
+ keyword=nil,change=nil,
+ value=nil}
+))
+ in ( LrTable.NT 5, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 3, ( ( _, ( MlyValue.CONSTR_LIST CONSTR_LIST1, _,
+CONSTR_LIST1right)) :: ( _, ( _, TERM1left, _)) :: rest671)) => let
+ val result = MlyValue.MPC_DECL (fn _ => let val (CONSTR_LIST as
+CONSTR_LIST1) = CONSTR_LIST1 ()
+ in (
+DECL { prec=nil,nonterm=NONE,
+ term = SOME CONSTR_LIST, eop =nil,control=nil,
+ change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, TERM1left, CONSTR_LIST1right), rest671)
+
+end
+| ( 4, ( ( _, ( MlyValue.CONSTR_LIST CONSTR_LIST1, _,
+CONSTR_LIST1right)) :: ( _, ( _, NONTERM1left, _)) :: rest671)) => let
+ val result = MlyValue.MPC_DECL (fn _ => let val (CONSTR_LIST as
+CONSTR_LIST1) = CONSTR_LIST1 ()
+ in (
+DECL { prec=nil,control=nil,nonterm= SOME CONSTR_LIST,
+ term = NONE, eop=nil,change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, NONTERM1left, CONSTR_LIST1right),
+rest671)
+end
+| ( 5, ( ( _, ( MlyValue.ID_LIST ID_LIST1, _, ID_LIST1right)) :: ( _,
+ ( MlyValue.PREC PREC1, PREC1left, _)) :: rest671)) => let val result
+ = MlyValue.MPC_DECL (fn _ => let val (PREC as PREC1) = PREC1 ()
+ val (ID_LIST as ID_LIST1) = ID_LIST1 ()
+ in (
+DECL {prec= [(PREC,ID_LIST)],control=nil,
+ nonterm=NONE,term=NONE,eop=nil,change=nil,
+ keyword=nil,value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PREC1left, ID_LIST1right), rest671)
+end
+| ( 6, ( ( _, ( MlyValue.ID ID1, _, ID1right)) :: ( _, ( _,
+START1left, _)) :: rest671)) => let val result = MlyValue.MPC_DECL
+ (fn _ => let val (ID as ID1) = ID1 ()
+ in (
+DECL {prec=nil,control=[START_SYM (symbolMake ID)],nonterm=NONE,
+ term = NONE, eop = nil,change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, START1left, ID1right), rest671)
+end
+| ( 7, ( ( _, ( MlyValue.ID_LIST ID_LIST1, _, ID_LIST1right)) :: ( _,
+ ( _, PERCENT_EOP1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (ID_LIST as ID_LIST1) = ID_LIST1
+ ()
+ in (
+DECL {prec=nil,control=nil,nonterm=NONE,term=NONE,
+ eop=ID_LIST, change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PERCENT_EOP1left, ID_LIST1right),
+rest671)
+end
+| ( 8, ( ( _, ( MlyValue.ID_LIST ID_LIST1, _, ID_LIST1right)) :: ( _,
+ ( _, KEYWORD1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (ID_LIST as ID_LIST1) = ID_LIST1
+ ()
+ in (
+DECL {prec=nil,control=nil,nonterm=NONE,term=NONE,eop=nil,
+ change=nil,keyword=ID_LIST,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, KEYWORD1left, ID_LIST1right), rest671)
+
+end
+| ( 9, ( ( _, ( MlyValue.ID_LIST ID_LIST1, _, ID_LIST1right)) :: ( _,
+ ( _, PREFER1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (ID_LIST as ID_LIST1) = ID_LIST1
+ ()
+ in (
+DECL {prec=nil,control=nil,nonterm=NONE,term=NONE,eop=nil,
+ change=map (fn i=>([],[i])) ID_LIST,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PREFER1left, ID_LIST1right), rest671)
+
+end
+| ( 10, ( ( _, ( MlyValue.CHANGE_DECL CHANGE_DECL1, _,
+CHANGE_DECL1right)) :: ( _, ( _, CHANGE1left, _)) :: rest671)) => let
+ val result = MlyValue.MPC_DECL (fn _ => let val (CHANGE_DECL as
+CHANGE_DECL1) = CHANGE_DECL1 ()
+ in (
+DECL {prec=nil,control=nil,nonterm=NONE,term=NONE,eop=nil,
+ change=CHANGE_DECL,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, CHANGE1left, CHANGE_DECL1right), rest671
+)
+end
+| ( 11, ( ( _, ( MlyValue.SUBST_DECL SUBST_DECL1, _, SUBST_DECL1right
+)) :: ( _, ( _, SUBST1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (SUBST_DECL as SUBST_DECL1) =
+SUBST_DECL1 ()
+ in (
+DECL {prec=nil,control=nil,nonterm=NONE,term=NONE,eop=nil,
+ change=SUBST_DECL,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, SUBST1left, SUBST_DECL1right), rest671)
+
+end
+| ( 12, ( ( _, ( MlyValue.ID_LIST ID_LIST1, _, ID_LIST1right)) :: ( _
+, ( _, NOSHIFT1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (ID_LIST as ID_LIST1) = ID_LIST1
+ ()
+ in (
+DECL {prec=nil,control=[NSHIFT ID_LIST],nonterm=NONE,term=NONE,
+ eop=nil,change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, NOSHIFT1left, ID_LIST1right), rest671)
+
+end
+| ( 13, ( ( _, ( MlyValue.PROG PROG1, _, PROG1right)) :: ( _, ( _,
+PERCENT_HEADER1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (PROG as PROG1) = PROG1 ()
+ in (
+DECL {prec=nil,control=[FUNCTOR PROG],nonterm=NONE,term=NONE,
+ eop=nil,change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PERCENT_HEADER1left, PROG1right),
+rest671)
+end
+| ( 14, ( ( _, ( MlyValue.PROG PROG1, _, PROG1right)) :: ( _, ( _,
+PERCENT_TOKEN_SIG_INFO1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (PROG as PROG1) = PROG1 ()
+ in (
+DECL {prec=nil,control=[TOKEN_SIG_INFO PROG],
+ nonterm=NONE,term=NONE,
+ eop=nil,change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PERCENT_TOKEN_SIG_INFO1left, PROG1right)
+, rest671)
+end
+| ( 15, ( ( _, ( MlyValue.ID ID1, _, ID1right)) :: ( _, ( _,
+NAME1left, _)) :: rest671)) => let val result = MlyValue.MPC_DECL (fn
+ _ => let val (ID as ID1) = ID1 ()
+ in (
+DECL {prec=nil,control=[PARSER_NAME (symbolMake ID)],
+ nonterm=NONE,term=NONE,
+ eop=nil,change=nil,keyword=nil, value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, NAME1left, ID1right), rest671)
+end
+| ( 16, ( ( _, ( MlyValue.TY TY1, _, TY1right)) :: _ :: ( _, (
+MlyValue.PROG PROG1, _, _)) :: ( _, ( _, PERCENT_ARG1left, _)) ::
+rest671)) => let val result = MlyValue.MPC_DECL (fn _ => let val (
+PROG as PROG1) = PROG1 ()
+ val (TY as TY1) = TY1 ()
+ in (
+DECL {prec=nil,control=[PARSE_ARG(PROG,TY)],nonterm=NONE,
+ term=NONE,eop=nil,change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PERCENT_ARG1left, TY1right), rest671)
+
+end
+| ( 17, ( ( _, ( _, VERBOSE1left, VERBOSE1right)) :: rest671)) => let
+ val result = MlyValue.MPC_DECL (fn _ => (
+DECL {prec=nil,control=[Hdr.VERBOSE],
+ nonterm=NONE,term=NONE,eop=nil,
+ change=nil,keyword=nil,
+ value=nil}
+))
+ in ( LrTable.NT 4, ( result, VERBOSE1left, VERBOSE1right), rest671)
+
+end
+| ( 18, ( ( _, ( _, NODEFAULT1left, NODEFAULT1right)) :: rest671)) =>
+ let val result = MlyValue.MPC_DECL (fn _ => (
+DECL {prec=nil,control=[Hdr.NODEFAULT],
+ nonterm=NONE,term=NONE,eop=nil,
+ change=nil,keyword=nil,
+ value=nil}
+))
+ in ( LrTable.NT 4, ( result, NODEFAULT1left, NODEFAULT1right),
+rest671)
+end
+| ( 19, ( ( _, ( _, PERCENT_PURE1left, PERCENT_PURE1right)) ::
+rest671)) => let val result = MlyValue.MPC_DECL (fn _ => (
+DECL {prec=nil,control=[Hdr.PURE],
+ nonterm=NONE,term=NONE,eop=nil,
+ change=nil,keyword=nil,
+ value=nil}
+))
+ in ( LrTable.NT 4, ( result, PERCENT_PURE1left, PERCENT_PURE1right),
+rest671)
+end
+| ( 20, ( ( _, ( MlyValue.TY TY1, _, TY1right)) :: ( _, ( _,
+PERCENT_POS1left, _)) :: rest671)) => let val result =
+MlyValue.MPC_DECL (fn _ => let val (TY as TY1) = TY1 ()
+ in (
+DECL {prec=nil,control=[Hdr.POS TY],
+ nonterm=NONE,term=NONE,eop=nil,
+ change=nil,keyword=nil,
+ value=nil}
+)
+end)
+ in ( LrTable.NT 4, ( result, PERCENT_POS1left, TY1right), rest671)
+
+end
+| ( 21, ( ( _, ( MlyValue.PROG PROG1, _, PROG1right)) :: ( _, (
+MlyValue.ID ID1, _, _)) :: ( _, ( _, VALUE1left, _)) :: rest671)) =>
+ let val result = MlyValue.MPC_DECL (fn _ => let val (ID as ID1) =
+ID1 ()
+ val (PROG as PROG1) = PROG1 ()
+ in (
+DECL {prec=nil,control=nil,
+ nonterm=NONE,term=NONE,eop=nil,
+ change=nil,keyword=nil,
+ value=[(symbolMake ID,PROG)]}
+)
+end)
+ in ( LrTable.NT 4, ( result, VALUE1left, PROG1right), rest671)
+end
+| ( 22, ( ( _, ( MlyValue.CHANGE_DECL CHANGE_DECL1, _,
+CHANGE_DECL1right)) :: _ :: ( _, ( MlyValue.CHANGE_DEC CHANGE_DEC1,
+CHANGE_DEC1left, _)) :: rest671)) => let val result =
+MlyValue.CHANGE_DECL (fn _ => let val (CHANGE_DEC as CHANGE_DEC1) =
+CHANGE_DEC1 ()
+ val (CHANGE_DECL as CHANGE_DECL1) = CHANGE_DECL1 ()
+ in (CHANGE_DEC :: CHANGE_DECL)
+end)
+ in ( LrTable.NT 14, ( result, CHANGE_DEC1left, CHANGE_DECL1right),
+rest671)
+end
+| ( 23, ( ( _, ( MlyValue.CHANGE_DEC CHANGE_DEC1, CHANGE_DEC1left,
+CHANGE_DEC1right)) :: rest671)) => let val result =
+MlyValue.CHANGE_DECL (fn _ => let val (CHANGE_DEC as CHANGE_DEC1) =
+CHANGE_DEC1 ()
+ in ([CHANGE_DEC])
+end)
+ in ( LrTable.NT 14, ( result, CHANGE_DEC1left, CHANGE_DEC1right),
+rest671)
+end
+| ( 24, ( ( _, ( MlyValue.ID_LIST ID_LIST2, _, ID_LIST2right)) :: _
+ :: ( _, ( MlyValue.ID_LIST ID_LIST1, ID_LIST1left, _)) :: rest671))
+ => let val result = MlyValue.CHANGE_DEC (fn _ => let val ID_LIST1 =
+ ID_LIST1 ()
+ val ID_LIST2 = ID_LIST2 ()
+ in (ID_LIST1, ID_LIST2)
+end)
+ in ( LrTable.NT 15, ( result, ID_LIST1left, ID_LIST2right), rest671)
+
+end
+| ( 25, ( ( _, ( MlyValue.SUBST_DECL SUBST_DECL1, _, SUBST_DECL1right
+)) :: _ :: ( _, ( MlyValue.SUBST_DEC SUBST_DEC1, SUBST_DEC1left, _))
+ :: rest671)) => let val result = MlyValue.SUBST_DECL (fn _ => let
+ val (SUBST_DEC as SUBST_DEC1) = SUBST_DEC1 ()
+ val (SUBST_DECL as SUBST_DECL1) = SUBST_DECL1 ()
+ in (SUBST_DEC :: SUBST_DECL)
+end)
+ in ( LrTable.NT 12, ( result, SUBST_DEC1left, SUBST_DECL1right),
+rest671)
+end
+| ( 26, ( ( _, ( MlyValue.SUBST_DEC SUBST_DEC1, SUBST_DEC1left,
+SUBST_DEC1right)) :: rest671)) => let val result =
+MlyValue.SUBST_DECL (fn _ => let val (SUBST_DEC as SUBST_DEC1) =
+SUBST_DEC1 ()
+ in ([SUBST_DEC])
+end)
+ in ( LrTable.NT 12, ( result, SUBST_DEC1left, SUBST_DEC1right),
+rest671)
+end
+| ( 27, ( ( _, ( MlyValue.ID ID2, _, ID2right)) :: _ :: ( _, (
+MlyValue.ID ID1, ID1left, _)) :: rest671)) => let val result =
+MlyValue.SUBST_DEC (fn _ => let val ID1 = ID1 ()
+ val ID2 = ID2 ()
+ in ([symbolMake ID2],[symbolMake ID1])
+end)
+ in ( LrTable.NT 13, ( result, ID1left, ID2right), rest671)
+end
+| ( 28, ( ( _, ( MlyValue.TY TY1, _, TY1right)) :: _ :: ( _, (
+MlyValue.ID ID1, _, _)) :: _ :: ( _, ( MlyValue.CONSTR_LIST
+CONSTR_LIST1, CONSTR_LIST1left, _)) :: rest671)) => let val result =
+MlyValue.CONSTR_LIST (fn _ => let val (CONSTR_LIST as CONSTR_LIST1) =
+ CONSTR_LIST1 ()
+ val (ID as ID1) = ID1 ()
+ val (TY as TY1) = TY1 ()
+ in ((symbolMake ID,SOME (tyMake TY))::CONSTR_LIST)
+end)
+ in ( LrTable.NT 1, ( result, CONSTR_LIST1left, TY1right), rest671)
+
+end
+| ( 29, ( ( _, ( MlyValue.ID ID1, _, ID1right)) :: _ :: ( _, (
+MlyValue.CONSTR_LIST CONSTR_LIST1, CONSTR_LIST1left, _)) :: rest671))
+ => let val result = MlyValue.CONSTR_LIST (fn _ => let val (
+CONSTR_LIST as CONSTR_LIST1) = CONSTR_LIST1 ()
+ val (ID as ID1) = ID1 ()
+ in ((symbolMake ID,NONE)::CONSTR_LIST)
+end)
+ in ( LrTable.NT 1, ( result, CONSTR_LIST1left, ID1right), rest671)
+
+end
+| ( 30, ( ( _, ( MlyValue.TY TY1, _, TY1right)) :: _ :: ( _, (
+MlyValue.ID ID1, ID1left, _)) :: rest671)) => let val result =
+MlyValue.CONSTR_LIST (fn _ => let val (ID as ID1) = ID1 ()
+ val (TY as TY1) = TY1 ()
+ in ([(symbolMake ID,SOME (tyMake TY))])
+end)
+ in ( LrTable.NT 1, ( result, ID1left, TY1right), rest671)
+end
+| ( 31, ( ( _, ( MlyValue.ID ID1, ID1left, ID1right)) :: rest671)) =>
+ let val result = MlyValue.CONSTR_LIST (fn _ => let val (ID as ID1)
+ = ID1 ()
+ in ([(symbolMake ID,NONE)])
+end)
+ in ( LrTable.NT 1, ( result, ID1left, ID1right), rest671)
+end
+| ( 32, ( ( _, ( MlyValue.RHS_LIST RHS_LIST1, _, RHS_LIST1right)) ::
+ _ :: ( _, ( MlyValue.ID ID1, ID1left, _)) :: rest671)) => let val
+result = MlyValue.G_RULE (fn _ => let val (ID as ID1) = ID1 ()
+ val (RHS_LIST as RHS_LIST1) = RHS_LIST1 ()
+ in (
+map (fn {rhs,code,prec} =>
+ Hdr.RULE {lhs=symbolMake ID,rhs=rhs,
+ code=code,prec=prec})
+ RHS_LIST
+)
+end)
+ in ( LrTable.NT 9, ( result, ID1left, RHS_LIST1right), rest671)
+end
+| ( 33, ( ( _, ( MlyValue.G_RULE G_RULE1, _, G_RULE1right)) :: ( _, (
+ MlyValue.G_RULE_LIST G_RULE_LIST1, G_RULE_LIST1left, _)) :: rest671))
+ => let val result = MlyValue.G_RULE_LIST (fn _ => let val (
+G_RULE_LIST as G_RULE_LIST1) = G_RULE_LIST1 ()
+ val (G_RULE as G_RULE1) = G_RULE1 ()
+ in (G_RULE@G_RULE_LIST)
+end)
+ in ( LrTable.NT 10, ( result, G_RULE_LIST1left, G_RULE1right),
+rest671)
+end
+| ( 34, ( ( _, ( MlyValue.G_RULE G_RULE1, G_RULE1left, G_RULE1right))
+ :: rest671)) => let val result = MlyValue.G_RULE_LIST (fn _ => let
+ val (G_RULE as G_RULE1) = G_RULE1 ()
+ in (G_RULE)
+end)
+ in ( LrTable.NT 10, ( result, G_RULE1left, G_RULE1right), rest671)
+
+end
+| ( 35, ( ( _, ( MlyValue.ID_LIST ID_LIST1, _, ID_LIST1right)) :: ( _
+, ( MlyValue.ID ID1, ID1left, _)) :: rest671)) => let val result =
+MlyValue.ID_LIST (fn _ => let val (ID as ID1) = ID1 ()
+ val (ID_LIST as ID_LIST1) = ID_LIST1 ()
+ in (symbolMake ID :: ID_LIST)
+end)
+ in ( LrTable.NT 2, ( result, ID1left, ID_LIST1right), rest671)
+end
+| ( 36, ( rest671)) => let val result = MlyValue.ID_LIST (fn _ => (
+nil))
+ in ( LrTable.NT 2, ( result, defaultPos, defaultPos), rest671)
+end
+| ( 37, ( ( _, ( MlyValue.PROG PROG1, _, PROG1right)) :: ( _, (
+MlyValue.G_RULE_PREC G_RULE_PREC1, _, _)) :: ( _, ( MlyValue.ID_LIST
+ID_LIST1, ID_LIST1left, _)) :: rest671)) => let val result =
+MlyValue.RHS_LIST (fn _ => let val (ID_LIST as ID_LIST1) = ID_LIST1
+ ()
+ val (G_RULE_PREC as G_RULE_PREC1) = G_RULE_PREC1 ()
+ val (PROG as PROG1) = PROG1 ()
+ in ([{rhs=ID_LIST,code=PROG,prec=G_RULE_PREC}])
+end)
+ in ( LrTable.NT 8, ( result, ID_LIST1left, PROG1right), rest671)
+end
+| ( 38, ( ( _, ( MlyValue.PROG PROG1, _, PROG1right)) :: ( _, (
+MlyValue.G_RULE_PREC G_RULE_PREC1, _, _)) :: ( _, ( MlyValue.ID_LIST
+ID_LIST1, _, _)) :: _ :: ( _, ( MlyValue.RHS_LIST RHS_LIST1,
+RHS_LIST1left, _)) :: rest671)) => let val result = MlyValue.RHS_LIST
+ (fn _ => let val (RHS_LIST as RHS_LIST1) = RHS_LIST1 ()
+ val (ID_LIST as ID_LIST1) = ID_LIST1 ()
+ val (G_RULE_PREC as G_RULE_PREC1) = G_RULE_PREC1 ()
+ val (PROG as PROG1) = PROG1 ()
+ in ({rhs=ID_LIST,code=PROG,prec=G_RULE_PREC}::RHS_LIST)
+end)
+ in ( LrTable.NT 8, ( result, RHS_LIST1left, PROG1right), rest671)
+end
+| ( 39, ( ( _, ( MlyValue.TYVAR TYVAR1, TYVAR1left, TYVAR1right)) ::
+rest671)) => let val result = MlyValue.TY (fn _ => let val (TYVAR
+ as TYVAR1) = TYVAR1 ()
+ in (TYVAR)
+end)
+ in ( LrTable.NT 16, ( result, TYVAR1left, TYVAR1right), rest671)
+end
+| ( 40, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( MlyValue.RECORD_LIST
+RECORD_LIST1, _, _)) :: ( _, ( _, LBRACE1left, _)) :: rest671)) => let
+ val result = MlyValue.TY (fn _ => let val (RECORD_LIST as
+RECORD_LIST1) = RECORD_LIST1 ()
+ in ("{ "^RECORD_LIST^" } ")
+end)
+ in ( LrTable.NT 16, ( result, LBRACE1left, RBRACE1right), rest671)
+
+end
+| ( 41, ( ( _, ( _, _, RBRACE1right)) :: ( _, ( _, LBRACE1left, _))
+ :: rest671)) => let val result = MlyValue.TY (fn _ => ("{}"))
+ in ( LrTable.NT 16, ( result, LBRACE1left, RBRACE1right), rest671)
+
+end
+| ( 42, ( ( _, ( MlyValue.PROG PROG1, PROG1left, PROG1right)) ::
+rest671)) => let val result = MlyValue.TY (fn _ => let val (PROG as
+PROG1) = PROG1 ()
+ in (" ( "^PROG^" ) ")
+end)
+ in ( LrTable.NT 16, ( result, PROG1left, PROG1right), rest671)
+end
+| ( 43, ( ( _, ( MlyValue.QUAL_ID QUAL_ID1, _, QUAL_ID1right)) :: ( _
+, ( MlyValue.TY TY1, TY1left, _)) :: rest671)) => let val result =
+MlyValue.TY (fn _ => let val (TY as TY1) = TY1 ()
+ val (QUAL_ID as QUAL_ID1) = QUAL_ID1 ()
+ in (TY^" "^QUAL_ID)
+end)
+ in ( LrTable.NT 16, ( result, TY1left, QUAL_ID1right), rest671)
+end
+| ( 44, ( ( _, ( MlyValue.QUAL_ID QUAL_ID1, QUAL_ID1left,
+QUAL_ID1right)) :: rest671)) => let val result = MlyValue.TY (fn _ =>
+ let val (QUAL_ID as QUAL_ID1) = QUAL_ID1 ()
+ in (QUAL_ID)
+end)
+ in ( LrTable.NT 16, ( result, QUAL_ID1left, QUAL_ID1right), rest671)
+
+end
+| ( 45, ( ( _, ( MlyValue.TY TY2, _, TY2right)) :: _ :: ( _, (
+MlyValue.TY TY1, TY1left, _)) :: rest671)) => let val result =
+MlyValue.TY (fn _ => let val TY1 = TY1 ()
+ val TY2 = TY2 ()
+ in (TY1^"*"^TY2)
+end)
+ in ( LrTable.NT 16, ( result, TY1left, TY2right), rest671)
+end
+| ( 46, ( ( _, ( MlyValue.TY TY2, _, TY2right)) :: _ :: ( _, (
+MlyValue.TY TY1, TY1left, _)) :: rest671)) => let val result =
+MlyValue.TY (fn _ => let val TY1 = TY1 ()
+ val TY2 = TY2 ()
+ in (TY1 ^ " -> " ^ TY2)
+end)
+ in ( LrTable.NT 16, ( result, TY1left, TY2right), rest671)
+end
+| ( 47, ( ( _, ( MlyValue.TY TY1, _, TY1right)) :: _ :: ( _, (
+MlyValue.LABEL LABEL1, _, _)) :: _ :: ( _, ( MlyValue.RECORD_LIST
+RECORD_LIST1, RECORD_LIST1left, _)) :: rest671)) => let val result =
+MlyValue.RECORD_LIST (fn _ => let val (RECORD_LIST as RECORD_LIST1) =
+ RECORD_LIST1 ()
+ val (LABEL as LABEL1) = LABEL1 ()
+ val (TY as TY1) = TY1 ()
+ in (RECORD_LIST^","^LABEL^":"^TY)
+end)
+ in ( LrTable.NT 7, ( result, RECORD_LIST1left, TY1right), rest671)
+
+end
+| ( 48, ( ( _, ( MlyValue.TY TY1, _, TY1right)) :: _ :: ( _, (
+MlyValue.LABEL LABEL1, LABEL1left, _)) :: rest671)) => let val result
+ = MlyValue.RECORD_LIST (fn _ => let val (LABEL as LABEL1) = LABEL1
+ ()
+ val (TY as TY1) = TY1 ()
+ in (LABEL^":"^TY)
+end)
+ in ( LrTable.NT 7, ( result, LABEL1left, TY1right), rest671)
+end
+| ( 49, ( ( _, ( MlyValue.ID ID1, ID1left, ID1right)) :: rest671)) =>
+ let val result = MlyValue.QUAL_ID (fn _ => let val (ID as ID1) =
+ID1 ()
+ in ((fn (a,_) => a) ID)
+end)
+ in ( LrTable.NT 6, ( result, ID1left, ID1right), rest671)
+end
+| ( 50, ( ( _, ( MlyValue.QUAL_ID QUAL_ID1, _, QUAL_ID1right)) :: ( _
+, ( MlyValue.IDDOT IDDOT1, IDDOT1left, _)) :: rest671)) => let val
+result = MlyValue.QUAL_ID (fn _ => let val (IDDOT as IDDOT1) = IDDOT1
+ ()
+ val (QUAL_ID as QUAL_ID1) = QUAL_ID1 ()
+ in (IDDOT^QUAL_ID)
+end)
+ in ( LrTable.NT 6, ( result, IDDOT1left, QUAL_ID1right), rest671)
+end
+| ( 51, ( ( _, ( MlyValue.ID ID1, ID1left, ID1right)) :: rest671)) =>
+ let val result = MlyValue.LABEL (fn _ => let val (ID as ID1) = ID1
+ ()
+ in ((fn (a,_) => a) ID)
+end)
+ in ( LrTable.NT 3, ( result, ID1left, ID1right), rest671)
+end
+| ( 52, ( ( _, ( MlyValue.INT INT1, INT1left, INT1right)) :: rest671)
+) => let val result = MlyValue.LABEL (fn _ => let val (INT as INT1)
+ = INT1 ()
+ in (INT)
+end)
+ in ( LrTable.NT 3, ( result, INT1left, INT1right), rest671)
+end
+| ( 53, ( ( _, ( MlyValue.ID ID1, _, ID1right)) :: ( _, ( _,
+PREC_TAG1left, _)) :: rest671)) => let val result =
+MlyValue.G_RULE_PREC (fn _ => let val (ID as ID1) = ID1 ()
+ in (SOME (symbolMake ID))
+end)
+ in ( LrTable.NT 11, ( result, PREC_TAG1left, ID1right), rest671)
+end
+| ( 54, ( rest671)) => let val result = MlyValue.G_RULE_PREC (fn _
+ => (NONE))
+ in ( LrTable.NT 11, ( result, defaultPos, defaultPos), rest671)
+end
+| _ => raise (mlyAction i392)
+end
+val void = MlyValue.VOID
+val extract = fn a => (fn MlyValue.BEGIN x => x
+| _ => let exception ParseInternal
+ in raise ParseInternal end) a ()
+end
+end
+structure Tokens : Mlyacc_TOKENS =
+struct
+type svalue = ParserData.svalue
+type ('a,'b) token = ('a,'b) Token.token
+fun ARROW (p1,p2) = Token.TOKEN (ParserData.LrTable.T 0,(
+ParserData.MlyValue.VOID,p1,p2))
+fun ASTERISK (p1,p2) = Token.TOKEN (ParserData.LrTable.T 1,(
+ParserData.MlyValue.VOID,p1,p2))
+fun BLOCK (p1,p2) = Token.TOKEN (ParserData.LrTable.T 2,(
+ParserData.MlyValue.VOID,p1,p2))
+fun BAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 3,(
+ParserData.MlyValue.VOID,p1,p2))
+fun CHANGE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 4,(
+ParserData.MlyValue.VOID,p1,p2))
+fun COLON (p1,p2) = Token.TOKEN (ParserData.LrTable.T 5,(
+ParserData.MlyValue.VOID,p1,p2))
+fun COMMA (p1,p2) = Token.TOKEN (ParserData.LrTable.T 6,(
+ParserData.MlyValue.VOID,p1,p2))
+fun DELIMITER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 7,(
+ParserData.MlyValue.VOID,p1,p2))
+fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8,(
+ParserData.MlyValue.VOID,p1,p2))
+fun FOR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9,(
+ParserData.MlyValue.VOID,p1,p2))
+fun HEADER (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 10,(
+ParserData.MlyValue.HEADER (fn () => i),p1,p2))
+fun ID (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 11,(
+ParserData.MlyValue.ID (fn () => i),p1,p2))
+fun IDDOT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 12,(
+ParserData.MlyValue.IDDOT (fn () => i),p1,p2))
+fun PERCENT_HEADER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13,(
+ParserData.MlyValue.VOID,p1,p2))
+fun INT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 14,(
+ParserData.MlyValue.INT (fn () => i),p1,p2))
+fun KEYWORD (p1,p2) = Token.TOKEN (ParserData.LrTable.T 15,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 16,(
+ParserData.MlyValue.VOID,p1,p2))
+fun LPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 17,(
+ParserData.MlyValue.VOID,p1,p2))
+fun NAME (p1,p2) = Token.TOKEN (ParserData.LrTable.T 18,(
+ParserData.MlyValue.VOID,p1,p2))
+fun NODEFAULT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 19,(
+ParserData.MlyValue.VOID,p1,p2))
+fun NONTERM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 20,(
+ParserData.MlyValue.VOID,p1,p2))
+fun NOSHIFT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 21,(
+ParserData.MlyValue.VOID,p1,p2))
+fun OF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 22,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PERCENT_EOP (p1,p2) = Token.TOKEN (ParserData.LrTable.T 23,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PERCENT_PURE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 24,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PERCENT_POS (p1,p2) = Token.TOKEN (ParserData.LrTable.T 25,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PERCENT_ARG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 26,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PERCENT_TOKEN_SIG_INFO (p1,p2) = Token.TOKEN (
+ParserData.LrTable.T 27,(ParserData.MlyValue.VOID,p1,p2))
+fun PREC (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 28,(
+ParserData.MlyValue.PREC (fn () => i),p1,p2))
+fun PREC_TAG (p1,p2) = Token.TOKEN (ParserData.LrTable.T 29,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PREFER (p1,p2) = Token.TOKEN (ParserData.LrTable.T 30,(
+ParserData.MlyValue.VOID,p1,p2))
+fun PROG (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 31,(
+ParserData.MlyValue.PROG (fn () => i),p1,p2))
+fun RBRACE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 32,(
+ParserData.MlyValue.VOID,p1,p2))
+fun RPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 33,(
+ParserData.MlyValue.VOID,p1,p2))
+fun SUBST (p1,p2) = Token.TOKEN (ParserData.LrTable.T 34,(
+ParserData.MlyValue.VOID,p1,p2))
+fun START (p1,p2) = Token.TOKEN (ParserData.LrTable.T 35,(
+ParserData.MlyValue.VOID,p1,p2))
+fun TERM (p1,p2) = Token.TOKEN (ParserData.LrTable.T 36,(
+ParserData.MlyValue.VOID,p1,p2))
+fun TYVAR (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 37,(
+ParserData.MlyValue.TYVAR (fn () => i),p1,p2))
+fun VERBOSE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 38,(
+ParserData.MlyValue.VOID,p1,p2))
+fun VALUE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 39,(
+ParserData.MlyValue.VOID,p1,p2))
+fun UNKNOWN (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 40,(
+ParserData.MlyValue.UNKNOWN (fn () => i),p1,p2))
+fun BOGUS_VALUE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 41,(
+ParserData.MlyValue.VOID,p1,p2))
+end
+end
diff --git a/lang/mlton/files/yacc.lex.sml b/lang/mlton/files/yacc.lex.sml
new file mode 100644
index 000000000000..6c78e2b26cb0
--- /dev/null
+++ b/lang/mlton/files/yacc.lex.sml
@@ -0,0 +1,901 @@
+type int = Int.int
+
+functor LexMLYACC(structure Tokens : Mlyacc_TOKENS
+ structure Hdr : HEADER (* = Header *)
+ where type prec = Header.prec
+ and type inputSource = Header.inputSource) : ARG_LEXER
+=
+ struct
+ structure UserDeclarations =
+ struct
+(* Modified by mfluet@acm.org on 2005-8-01.
+ * Update with SML/NJ 110.55+.
+ *)
+(* Modified by sweeks@acm.org on 2000-8-24.
+ * Ported to MLton.
+ *)
+
+(* ML-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi
+
+ yacc.lex: Lexer specification
+ *)
+
+structure Tokens = Tokens
+type svalue = Tokens.svalue
+type pos = int
+type ('a,'b) token = ('a,'b) Tokens.token
+type lexresult = (svalue,pos) token
+
+type lexarg = Hdr.inputSource
+type arg = lexarg
+
+open Tokens
+val error = Hdr.error
+val lineno = Hdr.lineno
+val text = Hdr.text
+
+val pcount: int ref = ref 0
+val commentLevel: int ref = ref 0
+val actionstart: int ref = ref 0
+
+val eof = fn i => (if (!pcount)>0 then
+ error i (!actionstart)
+ " eof encountered in action beginning here !"
+ else (); EOF(!lineno,!lineno))
+
+val Add = fn s => (text := s::(!text))
+
+
+local val dict = [("%prec",PREC_TAG),("%term",TERM),
+ ("%nonterm",NONTERM), ("%eop",PERCENT_EOP),("%start",START),
+ ("%prefer",PREFER),("%subst",SUBST),("%change",CHANGE),
+ ("%keyword",KEYWORD),("%name",NAME),
+ ("%verbose",VERBOSE), ("%nodefault",NODEFAULT),
+ ("%value",VALUE), ("%noshift",NOSHIFT),
+ ("%header",PERCENT_HEADER),("%pure",PERCENT_PURE),
+ ("%token_sig_info",PERCENT_TOKEN_SIG_INFO),
+ ("%arg",PERCENT_ARG),
+ ("%pos",PERCENT_POS)]
+in
+fun lookup (s,left,right) = let
+ fun f ((a,d)::b) = if a=s then d(left,right) else f b
+ | f nil = UNKNOWN(s,left,right)
+ in
+ f dict
+ end
+end
+
+fun inc (ri as ref i : int ref) = (ri := i+1)
+fun dec (ri as ref i : int ref) = (ri := i-1)
+
+end (* end of user routines *)
+exception LexError (* raised if illegal leaf action tried *)
+structure Internal =
+ struct
+
+datatype yyfinstate = N of int
+type statedata = {fin : yyfinstate list, trans: string}
+(* transition & final state table *)
+val tab = let
+val s = [
+ (0,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (1,
+"\015\015\015\015\015\015\015\015\015\015\022\015\015\021\015\015\
+\\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
+\\015\015\015\015\015\019\015\015\017\015\015\015\015\015\015\015\
+\\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
+\\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
+\\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
+\\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
+\\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\
+\\015"
+),
+ (3,
+"\023\023\023\023\023\023\023\023\023\066\069\023\023\068\023\023\
+\\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\023\
+\\066\023\023\023\023\046\023\044\042\023\041\023\040\038\023\023\
+\\036\036\036\036\036\036\036\036\036\036\035\023\023\023\023\023\
+\\023\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\
+\\027\027\027\027\027\027\027\027\027\027\027\023\023\023\023\023\
+\\023\027\027\027\027\027\032\027\027\027\027\027\027\027\027\030\
+\\027\027\027\027\027\027\027\027\027\027\027\026\025\024\023\023\
+\\023"
+),
+ (5,
+"\070\070\070\070\070\070\070\070\070\070\022\070\070\075\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\074\070\070\070\070\070\072\071\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070"
+),
+ (7,
+"\076\076\076\076\076\076\076\076\076\078\022\076\076\080\076\076\
+\\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\
+\\078\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\
+\\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\
+\\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\
+\\076\076\076\076\076\076\076\076\076\076\076\076\077\076\076\076\
+\\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\
+\\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\076\
+\\076"
+),
+ (9,
+"\081\081\081\081\081\081\081\081\081\081\022\081\081\075\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\085\084\082\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081"
+),
+ (11,
+"\087\087\087\087\087\087\087\087\087\087\095\087\087\094\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\093\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\088\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087"
+),
+ (13,
+"\096\096\096\096\096\096\096\096\096\096\022\096\096\075\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\100\099\097\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096"
+),
+ (15,
+"\016\016\016\016\016\016\016\016\016\016\000\016\016\000\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\000\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016"
+),
+ (17,
+"\016\016\016\016\016\016\016\016\016\016\000\016\016\000\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\000\016\016\016\016\018\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\016\
+\\016"
+),
+ (19,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (21,
+"\000\000\000\000\000\000\000\000\000\000\022\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (27,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\028\000\000\000\000\000\000\029\000\
+\\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\000\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\028\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\028\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\028\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\
+\\000"
+),
+ (30,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\028\000\000\000\000\000\000\029\000\
+\\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\000\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\028\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\028\
+\\000\028\028\028\028\028\031\028\028\028\028\028\028\028\028\028\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\
+\\000"
+),
+ (32,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\028\000\000\000\000\000\000\029\000\
+\\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\000\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\028\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\028\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\033\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\
+\\000"
+),
+ (33,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\028\000\000\000\000\000\000\029\000\
+\\028\028\028\028\028\028\028\028\028\028\000\000\000\000\000\000\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\028\
+\\028\028\028\028\028\028\028\028\028\028\028\000\000\000\000\028\
+\\000\028\028\028\028\028\028\028\028\028\028\028\028\028\028\028\
+\\028\028\034\028\028\028\028\028\028\028\028\000\000\000\000\000\
+\\000"
+),
+ (36,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\037\037\037\037\037\037\037\037\037\037\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (38,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\039\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (42,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\043\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (44,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\045\000\000\000\000\000\000\000\000\
+\\045\045\045\045\045\045\045\045\045\045\000\000\000\000\000\000\
+\\000\045\045\045\045\045\045\045\045\045\045\045\045\045\045\045\
+\\045\045\045\045\045\045\045\045\045\045\045\000\000\000\000\045\
+\\000\045\045\045\045\045\045\045\045\045\045\045\045\045\045\045\
+\\045\045\045\045\045\045\045\045\045\045\045\000\000\000\000\000\
+\\000"
+),
+ (46,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\065\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\061\047\053\047\
+\\047\047\048\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (47,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (48,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\049\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (49,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\050\047\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (50,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\051\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (51,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\052\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (53,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\054\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (54,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\055\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (55,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\056\047\047\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (56,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\057\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (57,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\058\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (58,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\059\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (59,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\060\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (61,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\062\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (62,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\063\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\047\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (63,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\047\
+\\000\047\047\047\047\047\047\047\047\047\047\047\047\047\047\047\
+\\047\047\047\047\064\047\047\047\047\047\047\000\000\000\000\000\
+\\000"
+),
+ (66,
+"\000\000\000\000\000\000\000\000\000\067\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\067\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (68,
+"\000\000\000\000\000\000\000\000\000\000\069\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (70,
+"\070\070\070\070\070\070\070\070\070\070\000\070\070\000\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\000\070\070\070\070\070\000\000\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\070\
+\\070"
+),
+ (72,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\073\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (78,
+"\000\000\000\000\000\000\000\000\000\079\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\079\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (81,
+"\081\081\081\081\081\081\081\081\081\081\000\081\081\000\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\000\000\000\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\081\
+\\081"
+),
+ (82,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\083\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (85,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\086\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (87,
+"\087\087\087\087\087\087\087\087\087\087\000\087\087\000\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\000\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\000\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\087\
+\\087"
+),
+ (88,
+"\000\000\000\000\000\000\000\000\000\090\092\000\000\091\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\090\000\089\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (91,
+"\000\000\000\000\000\000\000\000\000\000\092\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (94,
+"\000\000\000\000\000\000\000\000\000\000\095\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (96,
+"\096\096\096\096\096\096\096\096\096\096\000\096\096\000\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\000\000\000\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\096\
+\\096"
+),
+ (97,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\098\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+ (100,
+"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\101\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
+\\000"
+),
+(0, "")]
+fun f x = x
+val s = map f (rev (tl (rev s)))
+exception LexHackingError
+fun look ((j,x)::r, i) = if i = j then x else look(r, i)
+ | look ([], i) = raise LexHackingError
+fun g {fin=x, trans=i} = {fin=x, trans=look(s,i)}
+in Vector.fromList(map g
+[{fin = [], trans = 0},
+{fin = [], trans = 1},
+{fin = [], trans = 1},
+{fin = [], trans = 3},
+{fin = [], trans = 3},
+{fin = [], trans = 5},
+{fin = [], trans = 5},
+{fin = [], trans = 7},
+{fin = [], trans = 7},
+{fin = [], trans = 9},
+{fin = [], trans = 9},
+{fin = [], trans = 11},
+{fin = [], trans = 11},
+{fin = [], trans = 13},
+{fin = [], trans = 13},
+{fin = [(N 11),(N 21)], trans = 15},
+{fin = [(N 11)], trans = 15},
+{fin = [(N 11),(N 21)], trans = 17},
+{fin = [(N 2),(N 11)], trans = 15},
+{fin = [(N 21)], trans = 19},
+{fin = [(N 14)], trans = 0},
+{fin = [(N 19),(N 21)], trans = 21},
+{fin = [(N 19)], trans = 0},
+{fin = [(N 100)], trans = 0},
+{fin = [(N 42),(N 100)], trans = 0},
+{fin = [(N 93),(N 100)], trans = 0},
+{fin = [(N 40),(N 100)], trans = 0},
+{fin = [(N 96),(N 100)], trans = 27},
+{fin = [(N 96)], trans = 27},
+{fin = [(N 83)], trans = 0},
+{fin = [(N 96),(N 100)], trans = 30},
+{fin = [(N 34),(N 96)], trans = 27},
+{fin = [(N 96),(N 100)], trans = 32},
+{fin = [(N 96)], trans = 33},
+{fin = [(N 38),(N 96)], trans = 27},
+{fin = [(N 91),(N 100)], trans = 0},
+{fin = [(N 86),(N 100)], trans = 36},
+{fin = [(N 86)], trans = 36},
+{fin = [(N 100)], trans = 38},
+{fin = [(N 49)], trans = 0},
+{fin = [(N 44),(N 100)], trans = 0},
+{fin = [(N 46),(N 100)], trans = 0},
+{fin = [(N 98),(N 100)], trans = 42},
+{fin = [(N 5)], trans = 0},
+{fin = [(N 79),(N 100)], trans = 44},
+{fin = [(N 79)], trans = 44},
+{fin = [(N 100)], trans = 46},
+{fin = [(N 76)], trans = 47},
+{fin = [(N 76)], trans = 48},
+{fin = [(N 76)], trans = 49},
+{fin = [(N 76)], trans = 50},
+{fin = [(N 76)], trans = 51},
+{fin = [(N 62),(N 76)], trans = 47},
+{fin = [(N 76)], trans = 53},
+{fin = [(N 76)], trans = 54},
+{fin = [(N 76)], trans = 55},
+{fin = [(N 76)], trans = 56},
+{fin = [(N 76)], trans = 57},
+{fin = [(N 76)], trans = 58},
+{fin = [(N 76)], trans = 59},
+{fin = [(N 72),(N 76)], trans = 47},
+{fin = [(N 76)], trans = 61},
+{fin = [(N 76)], trans = 62},
+{fin = [(N 76)], trans = 63},
+{fin = [(N 55),(N 76)], trans = 47},
+{fin = [(N 89)], trans = 0},
+{fin = [(N 31),(N 100)], trans = 66},
+{fin = [(N 31)], trans = 66},
+{fin = [(N 26),(N 100)], trans = 68},
+{fin = [(N 26)], trans = 0},
+{fin = [(N 109)], trans = 70},
+{fin = [(N 104)], trans = 0},
+{fin = [(N 102)], trans = 72},
+{fin = [(N 8)], trans = 0},
+{fin = [(N 106)], trans = 0},
+{fin = [(N 19)], trans = 21},
+{fin = [(N 162)], trans = 0},
+{fin = [(N 160),(N 162)], trans = 0},
+{fin = [(N 158),(N 162)], trans = 78},
+{fin = [(N 158)], trans = 78},
+{fin = [(N 19),(N 162)], trans = 21},
+{fin = [(N 120)], trans = 81},
+{fin = [(N 111)], trans = 82},
+{fin = [(N 114)], trans = 0},
+{fin = [(N 111)], trans = 0},
+{fin = [(N 111)], trans = 85},
+{fin = [(N 117)], trans = 0},
+{fin = [(N 143)], trans = 87},
+{fin = [(N 135)], trans = 88},
+{fin = [(N 146)], trans = 0},
+{fin = [(N 155)], trans = 0},
+{fin = [(N 152)], trans = 91},
+{fin = [(N 152)], trans = 0},
+{fin = [(N 133)], trans = 0},
+{fin = [(N 140)], trans = 94},
+{fin = [(N 140)], trans = 0},
+{fin = [(N 131)], trans = 96},
+{fin = [(N 122)], trans = 97},
+{fin = [(N 125)], trans = 0},
+{fin = [(N 122)], trans = 0},
+{fin = [(N 122)], trans = 100},
+{fin = [(N 128)], trans = 0}])
+end
+structure StartStates =
+ struct
+ datatype yystartstate = STARTSTATE of int
+
+(* start state definitions *)
+
+val A = STARTSTATE 3;
+val CODE = STARTSTATE 5;
+val COMMENT = STARTSTATE 9;
+val EMPTYCOMMENT = STARTSTATE 13;
+val F = STARTSTATE 7;
+val INITIAL = STARTSTATE 1;
+val STRING = STARTSTATE 11;
+
+end
+type result = UserDeclarations.lexresult
+ exception LexerError (* raised if illegal leaf action tried *)
+end
+
+type int = Int.int
+fun makeLexer (yyinput: int -> string) =
+let val yygone0:int= ~1
+ val yyb = ref "\n" (* buffer *)
+ val yybl: int ref = ref 1 (*buffer length *)
+ val yybufpos: int ref = ref 1 (* location of next character to use *)
+ val yygone: int ref = ref yygone0 (* position in file of beginning of buffer *)
+ val yydone = ref false (* eof found yet? *)
+ val yybegin: int ref = ref 1 (*Current 'start state' for lexer *)
+
+ val YYBEGIN = fn (Internal.StartStates.STARTSTATE x) =>
+ yybegin := x
+
+fun lex (yyarg as (inputSource)) =
+let fun continue() : Internal.result =
+ let fun scan (s,AcceptingLeaves : Internal.yyfinstate list list,l,i0: int) =
+ let fun action (i: int,nil) = raise LexError
+ | action (i,nil::l) = action (i-1,l)
+ | action (i,(node::acts)::l) =
+ case node of
+ Internal.N yyk =>
+ (let fun yymktext() = String.substring(!yyb,i0,i-i0)
+ val yypos: int = i0+ !yygone
+ open UserDeclarations Internal.StartStates
+ in (yybufpos := i; case yyk of
+
+ (* Application actions *)
+
+ 100 => let val yytext=yymktext() in UNKNOWN(yytext,!lineno,!lineno) end
+| 102 => let val yytext=yymktext() in inc pcount; Add yytext; continue() end
+| 104 => let val yytext=yymktext() in dec pcount;
+ if !pcount = 0 then
+ PROG (concat (rev (!text)),!lineno,!lineno)
+ else (Add yytext; continue()) end
+| 106 => let val yytext=yymktext() in Add yytext; YYBEGIN STRING; continue() end
+| 109 => let val yytext=yymktext() in Add yytext; continue() end
+| 11 => let val yytext=yymktext() in Add yytext; continue() end
+| 111 => let val yytext=yymktext() in Add yytext; continue() end
+| 114 => let val yytext=yymktext() in Add yytext; dec commentLevel;
+ if !commentLevel=0
+ then BOGUS_VALUE(!lineno,!lineno)
+ else continue()
+ end
+| 117 => let val yytext=yymktext() in Add yytext; inc commentLevel; continue() end
+| 120 => let val yytext=yymktext() in Add yytext; continue() end
+| 122 => (continue())
+| 125 => (dec commentLevel;
+ if !commentLevel=0 then YYBEGIN A else ();
+ continue ())
+| 128 => (inc commentLevel; continue())
+| 131 => (continue())
+| 133 => let val yytext=yymktext() in Add yytext; YYBEGIN CODE; continue() end
+| 135 => let val yytext=yymktext() in Add yytext; continue() end
+| 14 => (YYBEGIN A; HEADER (concat (rev (!text)),!lineno,!lineno))
+| 140 => let val yytext=yymktext() in Add yytext; error inputSource (!lineno) "unclosed string";
+ inc lineno; YYBEGIN CODE; continue() end
+| 143 => let val yytext=yymktext() in Add yytext; continue() end
+| 146 => let val yytext=yymktext() in Add yytext; continue() end
+| 152 => let val yytext=yymktext() in Add yytext; inc lineno; YYBEGIN F; continue() end
+| 155 => let val yytext=yymktext() in Add yytext; YYBEGIN F; continue() end
+| 158 => let val yytext=yymktext() in Add yytext; continue() end
+| 160 => let val yytext=yymktext() in Add yytext; YYBEGIN STRING; continue() end
+| 162 => let val yytext=yymktext() in Add yytext; error inputSource (!lineno) "unclosed string";
+ YYBEGIN CODE; continue() end
+| 19 => let val yytext=yymktext() in Add yytext; inc lineno; continue() end
+| 2 => let val yytext=yymktext() in Add yytext; YYBEGIN COMMENT; commentLevel := 1;
+ continue() before YYBEGIN INITIAL end
+| 21 => let val yytext=yymktext() in Add yytext; continue() end
+| 26 => (inc lineno; continue ())
+| 31 => (continue())
+| 34 => (OF(!lineno,!lineno))
+| 38 => (FOR(!lineno,!lineno))
+| 40 => (LBRACE(!lineno,!lineno))
+| 42 => (RBRACE(!lineno,!lineno))
+| 44 => (COMMA(!lineno,!lineno))
+| 46 => (ASTERISK(!lineno,!lineno))
+| 49 => (ARROW(!lineno,!lineno))
+| 5 => (YYBEGIN EMPTYCOMMENT; commentLevel := 1; continue())
+| 55 => (PREC(Hdr.LEFT,!lineno,!lineno))
+| 62 => (PREC(Hdr.RIGHT,!lineno,!lineno))
+| 72 => (PREC(Hdr.NONASSOC,!lineno,!lineno))
+| 76 => let val yytext=yymktext() in lookup(yytext,!lineno,!lineno) end
+| 79 => let val yytext=yymktext() in TYVAR(yytext,!lineno,!lineno) end
+| 8 => let val yytext=yymktext() in Add yytext; YYBEGIN COMMENT; commentLevel := 1;
+ continue() before YYBEGIN CODE end
+| 83 => let val yytext=yymktext() in IDDOT(yytext,!lineno,!lineno) end
+| 86 => let val yytext=yymktext() in INT (yytext,!lineno,!lineno) end
+| 89 => (DELIMITER(!lineno,!lineno))
+| 91 => (COLON(!lineno,!lineno))
+| 93 => (BAR(!lineno,!lineno))
+| 96 => let val yytext=yymktext() in ID ((yytext,!lineno),!lineno,!lineno) end
+| 98 => (pcount := 1; actionstart := (!lineno);
+ text := nil; YYBEGIN CODE; continue() before YYBEGIN A)
+| _ => raise Internal.LexerError
+
+ ) end )
+
+ val {fin,trans} = Vector.sub (Internal.tab, s)
+ val NewAcceptingLeaves = fin::AcceptingLeaves
+ in if l = !yybl then
+ if trans = #trans(Vector.sub(Internal.tab,0))
+ then action(l,NewAcceptingLeaves
+) else let val newchars= if !yydone then "" else yyinput 1024
+ in if (String.size newchars)=0
+ then (yydone := true;
+ if (l=i0) then UserDeclarations.eof yyarg
+ else action(l,NewAcceptingLeaves))
+ else (if i0=l then yyb := newchars
+ else yyb := String.substring(!yyb,i0,l-i0)^newchars;
+ yygone := !yygone+i0;
+ yybl := String.size (!yyb);
+ scan (s,AcceptingLeaves,l-i0,0))
+ end
+ else let val NewChar = Char.ord (CharVector.sub (!yyb,l))
+ val NewChar = if NewChar<128 then NewChar else 128
+ val NewState = Char.ord (CharVector.sub (trans,NewChar))
+ in if NewState=0 then action(l,NewAcceptingLeaves)
+ else scan(NewState,NewAcceptingLeaves,l+1,i0)
+ end
+ end
+(*
+ val start= if String.substring(!yyb,!yybufpos-1,1)="\n"
+then !yybegin+1 else !yybegin
+*)
+ in scan(!yybegin (* start *),nil,!yybufpos,!yybufpos)
+ end
+in continue end
+ in lex
+ end
+end
diff --git a/lang/mlton/pkg-plist b/lang/mlton/pkg-plist
index 619539e9d99f..098b77956aab 100644
--- a/lang/mlton/pkg-plist
+++ b/lang/mlton/pkg-plist
@@ -116,6 +116,12 @@ lib/mlton/self/libgdtoa.a
lib/mlton/self/libmlton-gdb.a
lib/mlton/self/libmlton.a
lib/mlton/self/sizes
+%%MINGW32CROSS%%lib/mlton/mingw32/constants
+%%MINGW32CROSS%%lib/mlton/mingw32/include/c-types.h
+%%MINGW32CROSS%%lib/mlton/mingw32/libgdtoa.a
+%%MINGW32CROSS%%lib/mlton/mingw32/libmlton-gdb.a
+%%MINGW32CROSS%%lib/mlton/mingw32/libmlton.a
+%%MINGW32CROSS%%lib/mlton/mingw32/sizes
lib/mlton/sml/basis/Makefile
lib/mlton/sml/basis/README
lib/mlton/sml/basis/arrays-and-vectors/array-slice.sig
@@ -162,6 +168,7 @@ lib/mlton/sml/basis/config/c/sys-types.sml
lib/mlton/sml/basis/config/c/sys-word.sml
lib/mlton/sml/basis/config/c/word-to-bool.sml
lib/mlton/sml/basis/config/c/x86-freebsd/c-types.sml
+%%MINGW32CROSS%%lib/mlton/sml/basis/config/c/x86-mingw/c-types.sml
lib/mlton/sml/basis/config/choose-char.sml
lib/mlton/sml/basis/config/choose-int.sml
lib/mlton/sml/basis/config/choose-real.sml
@@ -3102,6 +3109,7 @@ lib/mlton/world.mlton
@dirrm lib/mlton/sml/basis/config/header
@dirrm lib/mlton/sml/basis/config/default
@dirrm lib/mlton/sml/basis/config/c/x86-freebsd
+%%MINGW32CROSS%%@dirrm lib/mlton/sml/basis/config/c/x86-mingw
@dirrm lib/mlton/sml/basis/config/c
@dirrm lib/mlton/sml/basis/config/bind
@dirrm lib/mlton/sml/basis/config
@@ -3111,6 +3119,8 @@ lib/mlton/world.mlton
@dirrm lib/mlton/sml
@dirrm lib/mlton/self/include
@dirrm lib/mlton/self
+%%MINGW32CROSS%%@dirrm lib/mlton/mingw32/include
+%%MINGW32CROSS%%@dirrm lib/mlton/mingw32
@dirrm lib/mlton/include/util
@dirrm lib/mlton/include/platform
@dirrm lib/mlton/include/gc