diff --git a/src/GF/API/GrammarToTransfer.hs b/src/GF/API/GrammarToTransfer.hs index 1bdd4ec94..658c15184 100644 --- a/src/GF/API/GrammarToTransfer.hs +++ b/src/GF/API/GrammarToTransfer.hs @@ -22,62 +22,73 @@ import GF.Grammar.Macros import GF.Infra.Modules import GF.Data.Operations -import Transfer.Core.Abs as C -import Transfer.Core.Print +import Transfer.Syntax.Abs as S +import Transfer.Syntax.Print -- | the main function grammar2transfer :: GFC.CanonGrammar -> String -grammar2transfer gr = printTree $ C.Module [cats2cat cat tree cats, funs2tree cat tree funs] +grammar2transfer gr = printTree $ S.Module imports decls where - cat = C.CIdent "Cat" -- FIXME - tree = C.CIdent "Tree" -- FIXME + cat = S.Ident "Cat" -- FIXME + tree = S.Ident "Tree" -- FIXME defs = concat [tree2list (jments m) | im@(_,ModMod m) <- modules gr, isModAbs m] -- get category name and context cats = [(cat, c) | (cat,GFC.AbsCat c _) <- defs] -- get function name and type funs = [(fun, typ) | (fun,GFC.AbsFun typ _) <- defs] name = ifNull "UnknownModule" (symid . last) [n | (n,ModMod m) <- modules gr, isModAbs m] - - + imports = [Import (S.Ident "prelude")] + decls = [cats2cat cat tree cats, funs2tree cat tree funs] ++ instances tree -- | Create a declaration of the type of categories given a list -- of category names and their contexts. -cats2cat :: CIdent -- ^ the name of the Cat type - -> CIdent -- ^ the name of the Tree type +cats2cat :: S.Ident -- ^ the name of the Cat type + -> S.Ident -- ^ the name of the Tree type -> [(A.Ident,A.Context)] -> Decl -cats2cat cat tree = C.DataDecl cat C.EType . map (uncurry catCons) +cats2cat cat tree = S.DataDecl cat S.EType . map (uncurry catCons) where - catCons i c = C.ConsDecl (id2id i) (catConsType c) - catConsType = foldr pi (C.EVar cat) - pi (i,x) t = C.EPi (id2pv i) (addTree tree $ term2exp x) t + catCons i c = S.ConsDecl (id2id i) (catConsType c) + catConsType = foldr pi (S.EVar cat) + pi (i,x) t = mkPi (id2pv i) (addTree tree $ term2exp x) t -funs2tree :: CIdent -- ^ the name of the Cat type - -> CIdent -- ^ the name of the Tree type +funs2tree :: S.Ident -- ^ the name of the Cat type + -> S.Ident -- ^ the name of the Tree type -> [(A.Ident,A.Type)] -> Decl funs2tree cat tree = - C.DataDecl tree (C.EPi C.PVWild (EVar cat) C.EType) . map (uncurry funCons) + S.DataDecl tree (S.EPiNoVar (S.EVar cat) S.EType) . map (uncurry funCons) where - funCons i t = C.ConsDecl (id2id i) (addTree tree $ term2exp t) + funCons i t = S.ConsDecl (id2id i) (addTree tree $ term2exp t) -term2exp :: A.Term -> C.Exp +term2exp :: A.Term -> S.Exp term2exp t = case t of - A.Vr i -> C.EVar (id2id i) - A.App t1 t2 -> C.EApp (term2exp t1) (term2exp t2) - A.Abs i t1 -> C.EAbs (id2pv i) (term2exp t1) - A.Prod i t1 t2 -> C.EPi (id2pv i) (term2exp t1) (term2exp t2) - A.Q m i -> C.EVar (id2id i) + A.Vr i -> S.EVar (id2id i) + A.App t1 t2 -> S.EApp (term2exp t1) (term2exp t2) + A.Abs i t1 -> S.EAbs (id2pv i) (term2exp t1) + A.Prod i t1 t2 -> mkPi (id2pv i) (term2exp t1) (term2exp t2) + A.Q m i -> S.EVar (id2id i) _ -> error $ "term2exp: can't handle " ++ show t -id2id :: A.Ident -> C.CIdent -id2id = CIdent . symid +mkPi :: S.VarOrWild -> S.Exp -> S.Exp -> S.Exp +mkPi VWild t e = S.EPiNoVar t e +mkPi v t e = S.EPi v t e -id2pv :: A.Ident -> PatternVariable -id2pv = C.PVVar . id2id +id2id :: A.Ident -> S.Ident +id2id = S.Ident . symid + +id2pv :: A.Ident -> S.VarOrWild +id2pv i = case symid i of + "h_" -> S.VWild -- FIXME: hacky? + x -> S.VVar (S.Ident x) -- FIXME: I think this is not general enoguh. -addTree :: CIdent -> C.Exp -> C.Exp +addTree :: S.Ident -> S.Exp -> S.Exp addTree tree x = case x of - C.EPi i t e -> C.EPi i (addTree tree t) (addTree tree e) - e -> C.EApp (C.EVar tree) e \ No newline at end of file + S.EPi i t e -> S.EPi i (addTree tree t) (addTree tree e) + S.EPiNoVar t e -> S.EPiNoVar (addTree tree t) (addTree tree e) + e -> S.EApp (S.EVar tree) e + +instances :: S.Ident -> [S.Decl] +instances tree = [DeriveDecl (S.Ident "Eq") tree, + DeriveDecl (S.Ident "Compos") tree] diff --git a/src/Transfer/Syntax/Doc.tex b/src/Transfer/Syntax/Doc.tex index 9005ffcd0..46716f164 100644 --- a/src/Transfer/Syntax/Doc.tex +++ b/src/Transfer/Syntax/Doc.tex @@ -93,7 +93,6 @@ All other symbols are terminals.\\ \begin{tabular}{lll} {\nonterminal{ListImport}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Import}} \\ & {\delimit} &{\nonterminal{Import}} {\terminal{;}} {\nonterminal{ListImport}} \\ \end{tabular}\\ @@ -106,7 +105,6 @@ All other symbols are terminals.\\ \begin{tabular}{lll} {\nonterminal{ListDecl}} & {\arrow} &{\emptyP} \\ - & {\delimit} &{\nonterminal{Decl}} \\ & {\delimit} &{\nonterminal{Decl}} {\terminal{;}} {\nonterminal{ListDecl}} \\ \end{tabular}\\ diff --git a/src/Transfer/Syntax/Layout.hs b/src/Transfer/Syntax/Layout.hs index c0bf9e5d8..d5eae2010 100644 --- a/src/Transfer/Syntax/Layout.hs +++ b/src/Transfer/Syntax/Layout.hs @@ -105,10 +105,17 @@ resolveLayout tp = res Nothing [if tl then Implicit 1 else Explicit] -- Nothing to see here, move along. res _ st (t:ts) = moveAlong st [t] ts - -- We are at EOF, close all open implicit non-top-level layout blocks. - res (Just t) st [] = - addTokens (position t) [layoutClose | Implicit n <- st, - not (tl && n == 1)] [] + -- At EOF: skip explicit blocks. + res (Just t) (Explicit:bs) [] | null bs = [] + | otherwise = res (Just t) bs [] + + -- If we are using top-level layout, insert a semicolon after the last token + res (Just t) [Implicit n] [] = addToken (nextPos t) layoutSep [] + + -- At EOF in an implicit, non-top-level block: close the block + res (Just t) (Implicit n:bs) [] = + let c = addToken (nextPos t) layoutClose [] + in moveAlong bs c [] -- This should only happen if the input is empty. res Nothing st [] = [] diff --git a/src/Transfer/Syntax/Par.hs b/src/Transfer/Syntax/Par.hs index 455d63676..c3caecd63 100644 --- a/src/Transfer/Syntax/Par.hs +++ b/src/Transfer/Syntax/Par.hs @@ -303,21 +303,21 @@ happyOutTok x = unsafeCoerce# x {-# INLINE happyOutTok #-} happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\xbf\x01\xa6\x03\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x01\xc4\x01\xf3\x00\x00\x00\xc9\x01\xbb\x01\x6c\x00\x9f\x00\xd0\x00\x00\x00\xc2\x03\xae\x01\x00\x00\x00\x00\x02\x03\xe6\x02\xf9\xff\xae\x03\x00\x00\x00\x00\xa6\x03\xca\x01\xa6\x03\xbe\x01\xb7\x01\xb4\x01\x00\x00\x00\x00\x00\x00\x86\x01\xb3\x01\x7d\x00\x85\x01\x00\x00\xa1\x01\x9d\x01\x00\x00\x84\x01\x84\x01\x78\x01\x77\x01\x77\x01\x77\x01\x6e\x01\x00\x00\x70\x01\x00\x00\xa6\x03\x00\x00\x8c\x01\x00\x00\x7d\x01\x7c\x01\x00\x00\x03\x00\xb3\x00\x83\x01\x5e\x01\x63\x01\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xae\x03\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x00\x00\xa6\x03\x00\x00\xa6\x03\x92\x03\x81\x01\xba\x02\x76\x03\x80\x01\x75\x01\x6d\x01\x6a\x01\x6b\x01\x67\x01\x68\x01\x57\x01\x65\x01\x00\x00\x2c\x01\x54\x01\x7d\x00\xa7\x02\x76\x03\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\x62\x03\xdc\x03\xc7\x02\x00\x00\x00\x00\x4e\x01\x00\x00\x46\x03\x00\x00\x00\x00\x22\x01\x46\x03\x00\x00\x22\x01\x46\x03\x26\x01\x13\x01\x46\x03\x18\x01\x39\x01\x29\x01\x38\x01\xdc\x03\x00\x00\x00\x00\x2e\x01\x21\x01\x28\x01\x00\x00\xdc\x03\x20\x01\x1a\x01\x1c\x01\x00\x00\x1f\x01\x1b\x01\x00\x00\x46\x03\x00\x00\x32\x03\x19\x01\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\xe1\x00\x00\x00\xfe\x00\xfc\x00\x00\x00\xfd\x00\xec\x00\x00\x00\x16\x03\x00\x00\xdc\x03\x00\x00\x00\x00\xdc\x03\xef\x00\xf1\x00\xe8\x00\xd8\x00\x00\x00\x16\x03\x00\x00\x00\x00\x00\x00\xdc\x03\xdc\x03\xdc\x03\xd1\x00\x00\x00\x16\x03\x00\x00\xdc\x03\x16\x03\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\xa8\x00\xdc\x03\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\xc5\x00\xc1\x00\xa5\x00\x00\x00\x00\x00\x8b\x00\x16\x03\x00\x00\x00\x00\x00\x00"# +happyActOffsets = HappyA# "\x00\x00\x76\x03\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x01\xab\x01\x34\x00\x00\x00\xb0\x01\xa2\x01\x6c\x00\x9f\x00\xb6\x00\x00\x00\x92\x03\x7e\x01\x00\x00\x00\x00\x02\x03\xe6\x02\xf9\xff\x7e\x03\x00\x00\x00\x00\x76\x03\xb2\x01\x76\x03\xb1\x01\xa5\x01\xa0\x01\x00\x00\x00\x00\x00\x00\x6b\x01\x74\x01\x9b\x01\x7d\x00\x6a\x01\x6a\x01\x6a\x01\x6a\x01\x60\x01\x00\x00\x5e\x01\x00\x00\x76\x03\x00\x00\x76\x01\x00\x00\x7b\x01\x78\x01\x00\x00\x03\x00\x41\x00\x81\x01\x45\x01\x62\x01\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x7e\x03\x76\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x00\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x03\x00\x00\x76\x03\x00\x00\x76\x03\x62\x03\x6e\x01\xba\x02\x46\x03\x6d\x01\x69\x01\x68\x01\x66\x01\x5c\x01\x65\x01\x56\x01\x55\x01\x4f\x01\x00\x00\x50\x01\x43\x01\x20\x01\x20\x01\x00\x00\x20\x01\x3d\x01\x00\x00\xa7\x02\x46\x03\x00\x00\x1f\x01\x46\x03\x00\x00\x1f\x01\x46\x03\x0f\x01\x0c\x01\x46\x03\x13\x01\x34\x01\x26\x01\x23\x01\xac\x03\x00\x00\x00\x00\x21\x01\x1c\x01\x12\x01\x00\x00\xac\x03\x00\x00\x00\x00\x1a\x01\x18\x01\x16\x01\x00\x00\x11\x01\x09\x01\xac\x03\xc7\x02\x00\x00\x00\x00\x08\x01\x00\x00\x46\x03\x00\x00\x32\x03\x03\x01\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\x32\x03\x16\x03\x00\x00\xd6\x00\x00\x00\x16\x03\x00\x00\x16\x03\x00\x00\x00\x00\xd4\x00\x00\x00\xec\x00\xe6\x00\x00\x00\xea\x00\xe2\x00\x00\x00\xac\x03\xac\x03\xac\x03\xde\x00\x00\x00\x16\x03\x00\x00\xac\x03\x16\x03\x00\x00\x00\x00\x00\x00\xac\x03\x00\x00\x00\x00\xac\x03\xe9\x00\xdf\x00\xe8\x00\x00\x00\x00\x00\xd8\x00\xa8\x00\x00\x00\xa8\x00\xac\x03\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\xbb\x00\xa5\x00\x00\x00\x8c\x00\x16\x03\x00\x00\x00\x00\x00\x00"# happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\xcf\x00\x3a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x04\x00\x00\x00\x00\x00\x00\x78\x00\x35\x00\x17\x00\xc2\x04\x00\x00\x00\x00\x21\x02\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x95\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x61\x00\x4b\x00\x86\x00\x60\x00\x19\x00\x67\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb8\x04\xb4\x04\xb0\x04\x83\x04\xac\x04\x99\x04\x7c\x04\x70\x04\x69\x04\x53\x04\x40\x04\x39\x04\x2a\x04\x10\x04\x01\x04\xf7\x03\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x1b\x00\x00\x00\x01\x00\x9a\x02\x00\x00\x4f\x00\xa4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x0a\x00\xfb\x02\x8b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x1f\x05\x0d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x72\x01\x00\x00\x00\x00\x5e\x00\x59\x01\x00\x00\x08\x00\x40\x01\x00\x00\x13\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x03\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x6a\x02\x00\x00\x00\x00\x52\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x07\x05\x00\x00\x00\x00\xf5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\xe1\x04\x38\x05\x28\x05\x00\x00\xf7\xff\xc3\x00\x00\x00\x0b\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x6a\x00\x24\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x91\x00\x00\x00\x00\x00\x00\x00"# +happyGotoOffsets = HappyA# "\xbc\x00\x3a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x78\x00\x35\x00\x17\x00\x92\x04\x00\x00\x00\x00\x21\x02\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x0a\x00\x95\x00\x60\x00\x19\x00\x67\x00\x00\x00\x6f\x00\x00\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x88\x04\x84\x04\x80\x04\x53\x04\x7c\x04\x69\x04\x4c\x04\x40\x04\x39\x04\x23\x04\x10\x04\x09\x04\xfa\x03\xe0\x03\xd1\x03\xc7\x03\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x1b\x00\x00\x00\x01\x00\x9a\x02\x00\x00\x4f\x00\xa4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x61\x00\x4d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\xfb\x02\x8b\x01\x00\x00\x5e\x00\x72\x01\x00\x00\x08\x00\x59\x01\x00\x00\x13\x00\x40\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x04\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x82\x02\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x02\x0e\x01\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x04\x08\x05\xf8\x04\x00\x00\xf7\xff\xc3\x00\x00\x00\x0b\x00\xaa\x00\x00\x00\x00\x00\x00\x00\xd7\x04\x00\x00\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x6a\x00\xf4\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x91\x00\x00\x00\x00\x00\x00\x00"# happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\x95\xff\x93\xff\x92\xff\x91\xff\x00\x00\xcc\xff\x86\xff\xb5\xff\xb3\xff\xb1\xff\xaa\xff\xa8\xff\xa5\xff\xa1\xff\x9f\xff\x9d\xff\x9b\xff\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x90\xff\x94\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\x00\x00\xf6\xff\xf0\xff\x00\x00\xf8\xff\xd4\xff\xef\xff\xf9\xff\x00\x00\x00\x00\xf7\xff\x8d\xff\x89\xff\xc2\xff\x00\x00\xb9\xff\x00\x00\xa0\xff\x00\x00\xcb\xff\x00\x00\xca\xff\x85\xff\x00\x00\x98\xff\x95\xff\x00\x00\x00\x00\x00\x00\x9e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\xb6\xff\xb7\xff\xb4\xff\xb2\xff\xab\xff\xac\xff\xad\xff\xae\xff\xaf\xff\xb0\xff\xa6\xff\xa7\xff\xa9\xff\xa2\xff\xa3\xff\xa4\xff\x9c\xff\x00\x00\x8f\xff\x00\x00\x97\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\x00\x00\x00\x00\x88\xff\x00\x00\x00\x00\x8c\xff\x00\x00\xf5\xff\x00\x00\x00\x00\xf0\xff\xe8\xff\x00\x00\xf3\xff\xda\xff\xdc\xff\xdb\xff\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\xd9\xff\xdd\xff\x00\x00\xee\xff\x00\x00\xf1\xff\x9a\xff\x8d\xff\x00\x00\x99\xff\x89\xff\x00\x00\x00\x00\xc2\xff\x00\x00\x00\x00\xba\xff\x00\x00\x00\x00\xbe\xff\xc9\xff\x84\xff\x00\x00\x00\x00\x00\x00\x96\xff\xda\xff\xe8\xff\xe6\xff\xe4\xff\xe2\xff\xbd\xff\x00\x00\xb8\xff\x00\x00\xc5\xff\x00\x00\x00\x00\xc0\xff\x00\x00\x8a\xff\x87\xff\x8e\xff\x8b\xff\x00\x00\xd1\xff\xd7\xff\xd6\xff\x00\x00\xe0\xff\xd7\xff\x00\x00\xe9\xff\x00\x00\xf2\xff\x00\x00\xd8\xff\xdf\xff\x00\x00\x00\x00\xd0\xff\x00\x00\x00\x00\xc8\xff\x00\x00\xc6\xff\xbb\xff\xc7\xff\xbe\xff\x00\x00\x00\x00\x00\x00\xd4\xff\x00\x00\xce\xff\xe3\xff\x00\x00\xe7\xff\xe5\xff\xbc\xff\xc3\xff\xec\xff\xe1\xff\xd1\xff\x00\x00\xd5\xff\x00\x00\xde\xff\xd2\xff\xcf\xff\x00\x00\xeb\xff\x00\x00\xbf\xff\xf4\xff\xec\xff\x00\x00\xed\xff\xea\xff"# +happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\xfd\xff\x97\xff\x95\xff\x94\xff\x93\xff\x00\x00\xce\xff\x88\xff\xb7\xff\xb5\xff\xb3\xff\xac\xff\xaa\xff\xa7\xff\xa3\xff\xa1\xff\x9f\xff\x9d\xff\xc6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x92\xff\x96\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xfb\xff\xfa\xff\x00\x00\xf1\xff\x00\x00\xf9\xff\x00\x00\x8f\xff\x8b\xff\xc4\xff\x00\x00\xbb\xff\x00\x00\xa2\xff\x00\x00\xcd\xff\x00\x00\xcc\xff\x87\xff\x00\x00\x9a\xff\x97\xff\x00\x00\x00\x00\x00\x00\xa0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xff\xb8\xff\xb9\xff\xb6\xff\xb4\xff\xad\xff\xae\xff\xaf\xff\xb0\xff\xb1\xff\xb2\xff\xa8\xff\xa9\xff\xab\xff\xa4\xff\xa5\xff\xa6\xff\x9e\xff\x00\x00\x91\xff\x00\x00\x99\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\x00\x00\x00\x00\x8a\xff\x00\x00\x00\x00\x8e\xff\x00\x00\xf8\xff\xd6\xff\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\x00\x00\xf0\xff\xea\xff\x00\x00\x9c\xff\x8f\xff\x00\x00\x9b\xff\x8b\xff\x00\x00\x00\x00\xc4\xff\x00\x00\x00\x00\xbc\xff\x00\x00\x00\x00\xc0\xff\xcb\xff\x86\xff\x00\x00\x00\x00\x00\x00\x98\xff\xdc\xff\xde\xff\xdd\xff\xea\xff\xe8\xff\xe6\xff\xe4\xff\xbf\xff\x00\x00\x00\x00\x00\x00\xdb\xff\xdf\xff\x00\x00\xba\xff\x00\x00\xc7\xff\x00\x00\x00\x00\xc2\xff\x00\x00\x8c\xff\x89\xff\x90\xff\x8d\xff\xf4\xff\xdc\xff\x00\x00\xd5\xff\x00\x00\x00\x00\xf2\xff\x00\x00\xeb\xff\x00\x00\xca\xff\x00\x00\xc8\xff\xbd\xff\xd3\xff\xd9\xff\xd8\xff\x00\x00\xe2\xff\xd9\xff\x00\x00\xc9\xff\xc0\xff\x00\x00\x00\x00\x00\x00\xd6\xff\x00\x00\xd0\xff\xe5\xff\x00\x00\xe9\xff\xe7\xff\xbe\xff\x00\x00\xda\xff\xe1\xff\x00\x00\x00\x00\xd2\xff\x00\x00\xc5\xff\xf3\xff\x00\x00\xee\xff\xe3\xff\xd3\xff\x00\x00\xd7\xff\x00\x00\xc1\xff\xe0\xff\xd4\xff\xd1\xff\x00\x00\xed\xff\x00\x00\xf5\xff\xee\xff\x00\x00\xef\xff\xec\xff"# happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x00\x00\x11\x00\x00\x00\x15\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x18\x00\x19\x00\x16\x00\x2d\x00\x2e\x00\x15\x00\x0b\x00\x17\x00\x2b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2b\x00\x2c\x00\x00\x00\x1d\x00\x2d\x00\x2e\x00\x15\x00\x00\x00\x17\x00\x07\x00\x08\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x15\x00\x16\x00\x17\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x1c\x00\x12\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x13\x00\x14\x00\x18\x00\x19\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x29\x00\x2a\x00\x29\x00\x2a\x00\x05\x00\x06\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x24\x00\x25\x00\x13\x00\x14\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1b\x00\x1c\x00\x31\x00\x0a\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x05\x00\x06\x00\x0a\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x05\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x12\x00\x13\x00\x0a\x00\x0c\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x30\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x05\x00\x04\x00\x01\x00\x07\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x0f\x00\x0a\x00\x01\x00\x11\x00\x2d\x00\x15\x00\x04\x00\x17\x00\x27\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2a\x00\x03\x00\x05\x00\x31\x00\x2d\x00\x15\x00\x02\x00\x17\x00\x01\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x02\x00\x04\x00\x01\x00\x2d\x00\x15\x00\x05\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x02\x00\x20\x00\x03\x00\x02\x00\x2d\x00\x15\x00\x0c\x00\x17\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x0f\x00\x2c\x00\x2f\x00\x01\x00\x2d\x00\x15\x00\x29\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x01\x00\x31\x00\x31\x00\x03\x00\x2d\x00\x15\x00\x03\x00\x17\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x03\x00\x20\x00\x14\x00\x07\x00\x2d\x00\x15\x00\x0f\x00\x17\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x29\x00\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x06\x00\xff\xff\x2d\x00\x09\x00\x17\x00\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x2d\x00\x0e\x00\x22\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x2d\x00\x0e\x00\x1c\x00\xff\xff\x31\x00\x32\x00\x33\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\x22\x00\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x09\x00\xff\xff\x0b\x00\x0c\x00\xff\xff\x2d\x00\xff\xff\x10\x00\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\x0e\x00\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x09\x00\x26\x00\x0b\x00\x28\x00\x21\x00\x22\x00\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x27\x00\x28\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# +happyCheck = HappyA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x09\x00\x0a\x00\x07\x00\x05\x00\x00\x00\x11\x00\x08\x00\x15\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x18\x00\x19\x00\x16\x00\x2d\x00\x2e\x00\x15\x00\x0b\x00\x17\x00\x2b\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x2b\x00\x2c\x00\x12\x00\x13\x00\x2d\x00\x2e\x00\x15\x00\x0a\x00\x17\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x02\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x15\x00\x16\x00\x17\x00\x00\x00\x09\x00\x0a\x00\x00\x00\x1c\x00\x12\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2d\x00\x13\x00\x14\x00\x18\x00\x19\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x29\x00\x2a\x00\x29\x00\x2a\x00\x00\x00\x1d\x00\x15\x00\x16\x00\x17\x00\x00\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x24\x00\x25\x00\x13\x00\x14\x00\x2d\x00\x15\x00\x08\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1b\x00\x1c\x00\x01\x00\x31\x00\x2d\x00\x15\x00\x04\x00\x17\x00\x06\x00\x00\x00\x01\x00\x02\x00\x03\x00\x02\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1d\x00\x1e\x00\x1f\x00\x0a\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x0f\x00\x05\x00\x0d\x00\x2d\x00\x15\x00\x0c\x00\x17\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x30\x00\x05\x00\x05\x00\x2d\x00\x15\x00\x03\x00\x17\x00\x04\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x08\x00\x07\x00\x06\x00\x0f\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x0a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0a\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x11\x00\x04\x00\x2a\x00\x27\x00\x2d\x00\x15\x00\x31\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x31\x00\x02\x00\x04\x00\x2d\x00\x15\x00\x01\x00\x17\x00\x02\x00\x00\x00\x01\x00\x02\x00\x03\x00\x01\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x04\x00\x01\x00\x05\x00\x04\x00\x2d\x00\x15\x00\x02\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x20\x00\x02\x00\x0c\x00\x0f\x00\x2d\x00\x15\x00\x0d\x00\x17\x00\x2c\x00\x00\x00\x01\x00\x02\x00\x03\x00\x2f\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x31\x00\x01\x00\x29\x00\x20\x00\x2d\x00\x15\x00\x36\x00\x17\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x03\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x03\x00\x03\x00\x14\x00\x07\x00\x2d\x00\x15\x00\x0f\x00\x17\x00\x36\x00\x00\x00\x01\x00\x02\x00\x03\x00\x31\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x15\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\x17\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x06\x00\xff\xff\x2d\x00\x09\x00\x17\x00\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x2d\x00\x0e\x00\x22\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x2d\x00\x0e\x00\x1c\x00\xff\xff\x31\x00\x32\x00\x33\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\x22\x00\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x09\x00\xff\xff\x0b\x00\x0c\x00\xff\xff\x2d\x00\xff\xff\x10\x00\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x21\x00\x22\x00\x23\x00\x0f\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\x0e\x00\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\x10\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x21\x00\x22\x00\x23\x00\x10\x00\x09\x00\x26\x00\x0b\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\x1c\x00\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x09\x00\x26\x00\x0b\x00\x28\x00\x21\x00\x22\x00\x2b\x00\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x21\x00\x22\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\x0e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x01\x00\x02\x00\x03\x00\x0f\x00\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x27\x00\x28\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\x1a\x00\x1b\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\xff\xff\x00\x00\x01\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x00\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcb\xff\xe1\x00\x3b\x00\x72\x00\xd2\x00\x2a\x00\x7f\x00\x80\x00\x81\x00\x8c\x00\xe2\x00\xe9\x00\x2b\x00\x8a\x00\x6f\x00\xcb\xff\x65\x00\x3b\x00\x38\x00\x09\x00\x72\x00\x83\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x70\x00\xad\x00\x39\x00\x15\x00\x9c\x00\x3b\x00\xce\x00\x09\x00\x73\x00\xb0\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x73\x00\x74\x00\x2a\x00\x6d\x00\x15\x00\x9d\x00\x3b\x00\x79\x00\x09\x00\x2b\x00\x2c\x00\x3e\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x75\x00\xe1\x00\x75\x00\x7a\x00\x15\x00\x3c\x00\x97\x00\x98\x00\x09\x00\x6f\x00\xe2\x00\xe3\x00\xc2\x00\x99\x00\x7c\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3e\x00\x05\x00\x06\x00\x07\x00\x15\x00\xc3\x00\xe0\x00\x70\x00\x71\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x76\x00\xb2\x00\x76\x00\x77\x00\x26\x00\x78\x00\x3f\x00\x40\x00\x09\x00\xc2\x00\x04\x00\x05\x00\x06\x00\x07\x00\x29\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x2e\x00\x2f\x00\xc3\x00\xc4\x00\x15\x00\xe8\x00\x47\x00\x09\x00\xe6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x48\x00\x49\x00\x04\x00\x68\x00\x15\x00\xe4\x00\x69\x00\x09\x00\xe7\x00\x04\x00\x05\x00\x06\x00\x07\x00\xe8\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x25\x00\x26\x00\x27\x00\xdf\x00\x15\x00\xd1\x00\x04\x00\x09\x00\xd9\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd4\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xda\x00\x44\x00\x45\x00\x46\x00\x15\x00\xd7\x00\xdb\x00\x09\x00\xdc\x00\x04\x00\x05\x00\x06\x00\x07\x00\xbf\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x52\x00\x53\x00\xc0\x00\xc1\x00\x15\x00\xbd\x00\xc2\x00\x09\x00\xc6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xc8\x00\xcb\x00\xcc\x00\xce\x00\x15\x00\xc9\x00\xcd\x00\x09\x00\x85\x00\x04\x00\x05\x00\x06\x00\x07\x00\xa0\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xd1\x00\xa1\x00\xa9\x00\xaa\x00\x15\x00\xac\x00\xab\x00\x09\x00\xac\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xaf\x00\xb5\x00\xbd\x00\x04\x00\x15\x00\xaf\x00\x8c\x00\x09\x00\x8f\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x8e\x00\x90\x00\x91\x00\x92\x00\x15\x00\xb1\x00\x93\x00\x09\x00\x94\x00\x04\x00\x05\x00\x06\x00\x07\x00\x95\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x96\x00\x42\x00\x9b\x00\x67\x00\x15\x00\xb3\x00\x6a\x00\x09\x00\x6b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6c\x00\x6d\x00\x6f\x00\x7c\x00\x15\x00\x7e\x00\x29\x00\x09\x00\x7e\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x30\x00\x04\x00\x04\x00\x31\x00\x15\x00\x96\x00\x32\x00\x09\x00\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x33\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x35\x00\x42\x00\x50\x00\x51\x00\x15\x00\x9e\x00\x54\x00\x09\x00\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x29\x00\x00\x00\x15\x00\x54\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x3f\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x33\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x35\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x08\x00\x00\x00\x09\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xc6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xc8\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xbb\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x85\x00\x00\x00\x15\x00\x86\x00\x9b\x00\x87\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x17\x00\x00\x00\x18\x00\x00\x00\x15\x00\x3b\x00\x89\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x87\x00\xb9\x00\x8a\x00\x88\x00\x1a\x00\x00\x00\x04\x00\x23\x00\x24\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x89\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x17\x00\x00\x00\x18\x00\x3e\x00\x00\x00\x8a\x00\x00\x00\x19\x00\x00\x00\x04\x00\x23\x00\x24\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x82\x00\x1b\x00\x1c\x00\x1d\x00\x83\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x3b\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x1a\x00\x38\x00\x1e\x00\x18\x00\x1f\x00\x1b\x00\x1c\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x86\x00\x00\x00\x87\x00\x00\x00\x00\x00\x88\x00\x00\x00\x7f\x00\x80\x00\x81\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcf\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x55\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x56\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x57\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x58\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x42\x00\x14\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5d\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x61\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x5f\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x11\x00\x12\x00\x13\x00\x14\x00\x62\x00\x12\x00\x13\x00\x14\x00\x63\x00\x12\x00\x13\x00\x14\x00\x64\x00\x12\x00\x13\x00\x14\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\x36\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa1\x00\x80\x00\x81\x00\x00\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\xa6\x00\xd6\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xb5\x00\xa3\x00\xa4\x00\xa5\x00\xb6\x00\xdc\x00\xa1\x00\x80\x00\x81\x00\x00\x00\xa6\x00\xa7\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\xb5\x00\xa3\x00\xa4\x00\xa5\x00\xb6\x00\xdd\x00\xb5\x00\xa3\x00\xa4\x00\xa5\x00\xb6\x00\xb7\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\xa1\x00\x80\x00\x81\x00\x00\x00\xa1\x00\x80\x00\x81\x00\xb9\x00\xa3\x00\xa4\x00\xa5\x00\xba\x00\xdf\x00\xa3\x00\xa4\x00\xa5\x00\xd4\x00\xa3\x00\xa4\x00\xa5\x00\xa1\x00\x80\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x00\xa4\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# +happyTable = HappyA# "\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\xcd\xff\xe0\x00\x35\x00\x6c\x00\xc7\x00\x73\x00\xab\x00\x92\x00\x93\x00\xb0\x00\xe1\x00\xe7\x00\x74\x00\x27\x00\x69\x00\xcd\xff\x28\x00\x35\x00\x32\x00\x09\x00\x6c\x00\xad\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x6a\x00\xa4\x00\x33\x00\x15\x00\x8c\x00\x35\x00\xc3\x00\x09\x00\x6d\x00\xa7\x00\x04\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6d\x00\x6e\x00\x4c\x00\x4d\x00\x15\x00\x8d\x00\x35\x00\x62\x00\x09\x00\x78\x00\x63\x00\x38\x00\x05\x00\x06\x00\x07\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x6f\x00\xe0\x00\x6f\x00\x79\x00\x15\x00\x36\x00\x87\x00\x88\x00\x09\x00\x69\x00\xe1\x00\xe2\x00\xd0\x00\x89\x00\x7b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x38\x00\x05\x00\x06\x00\x07\x00\x15\x00\xd1\x00\xdf\x00\x6a\x00\x6b\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x70\x00\xa9\x00\x70\x00\x71\x00\x5f\x00\x67\x00\x39\x00\x3a\x00\x09\x00\xd0\x00\x04\x00\x05\x00\x06\x00\x07\x00\x72\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x76\x00\x77\x00\xd1\x00\xd2\x00\x15\x00\xe6\x00\x41\x00\x09\x00\xe4\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x42\x00\x43\x00\xe5\x00\x04\x00\x15\x00\xdc\x00\x25\x00\x09\x00\x26\x00\x04\x00\x05\x00\x06\x00\x07\x00\xe6\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3e\x00\x3f\x00\x40\x00\xde\x00\x15\x00\xc6\x00\x04\x00\x09\x00\xd7\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd9\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xd8\x00\xc9\x00\xda\x00\xcd\x00\x15\x00\xd3\x00\xcf\x00\x09\x00\xce\x00\x04\x00\x05\x00\x06\x00\x07\x00\xd0\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\xd6\x00\xb4\x00\xb6\x00\x15\x00\xd4\x00\xb9\x00\x09\x00\xc0\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc1\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xc2\x00\xc3\x00\xaf\x00\xc6\x00\x15\x00\xb1\x00\xa0\x00\x09\x00\x90\x00\x04\x00\x05\x00\x06\x00\x07\x00\x91\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\xa1\x00\xa2\x00\xa6\x00\xa3\x00\x15\x00\xb7\x00\x04\x00\x09\x00\xb0\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x04\x00\x7d\x00\x7e\x00\x15\x00\xa3\x00\x7f\x00\x09\x00\x80\x00\x04\x00\x05\x00\x06\x00\x07\x00\x82\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x81\x00\x85\x00\x83\x00\x84\x00\x15\x00\xa6\x00\x86\x00\x09\x00\x8b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x3c\x00\x61\x00\x64\x00\x66\x00\x15\x00\xa8\x00\x65\x00\x09\x00\x67\x00\x04\x00\x05\x00\x06\x00\x07\x00\x69\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x78\x00\x2a\x00\x3c\x00\x15\x00\xaa\x00\xff\xff\x09\x00\x2b\x00\x04\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x2d\x00\x2f\x00\x4a\x00\x4b\x00\x15\x00\x86\x00\x4e\x00\x09\x00\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x8e\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x4e\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x39\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x2d\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x2f\x00\x00\x00\x09\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x08\x00\x00\x00\x09\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb2\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb4\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\xb6\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x15\x00\x9b\x00\x8b\x00\x9c\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x17\x00\x00\x00\x18\x00\x00\x00\x15\x00\x35\x00\x9e\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x9c\x00\xbd\x00\x9f\x00\x9d\x00\x1a\x00\x00\x00\x04\x00\x23\x00\x24\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x9e\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x17\x00\x00\x00\x18\x00\x38\x00\x00\x00\x9f\x00\x00\x00\x19\x00\x00\x00\x04\x00\x23\x00\x24\x00\xab\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xac\x00\x1b\x00\x1c\x00\x1d\x00\xad\x00\x17\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x35\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x19\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x17\x00\x00\x00\x18\x00\x00\x00\x1b\x00\x1c\x00\x1d\x00\x19\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x1a\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x1d\x00\x1a\x00\x32\x00\x1e\x00\x18\x00\x1f\x00\x1b\x00\x1c\x00\x20\x00\x00\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x1b\x00\x1c\x00\x9b\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x9d\x00\x00\x00\xab\x00\x92\x00\x93\x00\x21\x00\x22\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x25\x00\x04\x00\x05\x00\x06\x00\x07\x00\xc4\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x04\x00\x23\x00\x24\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x4f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x50\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x51\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x52\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x54\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x3c\x00\x14\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x55\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x57\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x58\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x59\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x00\x05\x00\x06\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x11\x00\x12\x00\x13\x00\x14\x00\x5c\x00\x12\x00\x13\x00\x14\x00\x5d\x00\x12\x00\x13\x00\x14\x00\x5e\x00\x12\x00\x13\x00\x14\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x30\x00\x12\x00\x13\x00\x14\x00\x00\x00\x00\x00\x94\x00\x95\x00\x96\x00\x97\x00\x91\x00\x92\x00\x93\x00\x00\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x98\x00\xcb\x00\x94\x00\x95\x00\x96\x00\x97\x00\xb9\x00\x95\x00\x96\x00\x97\x00\xba\x00\xda\x00\x91\x00\x92\x00\x93\x00\x00\x00\x98\x00\x99\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x95\x00\x96\x00\x97\x00\xba\x00\xdb\x00\xb9\x00\x95\x00\x96\x00\x97\x00\xba\x00\xbb\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x91\x00\x92\x00\x93\x00\x00\x00\x91\x00\x92\x00\x93\x00\xbd\x00\x95\x00\x96\x00\x97\x00\xbe\x00\xde\x00\x95\x00\x96\x00\x97\x00\xc9\x00\x95\x00\x96\x00\x97\x00\x91\x00\x92\x00\x93\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x96\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# -happyReduceArr = array (2, 123) [ +happyReduceArr = array (2, 121) [ (2 , happyReduce_2), (3 , happyReduce_3), (4 , happyReduce_4), @@ -437,9 +437,7 @@ happyReduceArr = array (2, 123) [ (118 , happyReduce_118), (119 , happyReduce_119), (120 , happyReduce_120), - (121 , happyReduce_121), - (122 , happyReduce_122), - (123 , happyReduce_123) + (121 , happyReduce_121) ] happy_n_terms = 55 :: Int @@ -479,7 +477,7 @@ happyReduction_6 happy_x_2 = case happyOut11 happy_x_1 of { happy_var_1 -> case happyOut13 happy_x_2 of { happy_var_2 -> happyIn9 - (Module happy_var_1 happy_var_2 + (Module (reverse happy_var_1) (reverse happy_var_2) )}} happyReduce_7 = happySpecReduce_2 5# happyReduction_7 @@ -495,25 +493,18 @@ happyReduction_8 = happyIn11 ([] ) -happyReduce_9 = happySpecReduce_1 6# happyReduction_9 -happyReduction_9 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn11 - ((:[]) happy_var_1 - )} - -happyReduce_10 = happySpecReduce_3 6# happyReduction_10 -happyReduction_10 happy_x_3 +happyReduce_9 = happySpecReduce_3 6# happyReduction_9 +happyReduction_9 happy_x_3 happy_x_2 happy_x_1 - = case happyOut10 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_3 of { happy_var_3 -> + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut10 happy_x_2 of { happy_var_2 -> happyIn11 - ((:) happy_var_1 happy_var_3 + (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_11 = happyReduce 8# 7# happyReduction_11 -happyReduction_11 (happy_x_8 `HappyStk` +happyReduce_10 = happyReduce 8# 7# happyReduction_10 +happyReduction_10 (happy_x_8 `HappyStk` happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` @@ -529,8 +520,8 @@ happyReduction_11 (happy_x_8 `HappyStk` (DataDecl happy_var_2 happy_var_4 happy_var_7 ) `HappyStk` happyRest}}} -happyReduce_12 = happySpecReduce_3 7# happyReduction_12 -happyReduction_12 happy_x_3 +happyReduce_11 = happySpecReduce_3 7# happyReduction_11 +happyReduction_11 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -539,8 +530,8 @@ happyReduction_12 happy_x_3 (TypeDecl happy_var_1 happy_var_3 )}} -happyReduce_13 = happyReduce 5# 7# happyReduction_13 -happyReduction_13 (happy_x_5 `HappyStk` +happyReduce_12 = happyReduce 5# 7# happyReduction_12 +happyReduction_12 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -554,8 +545,8 @@ happyReduction_13 (happy_x_5 `HappyStk` (ValueDecl happy_var_1 (reverse happy_var_2) happy_var_3 happy_var_5 ) `HappyStk` happyRest}}}} -happyReduce_14 = happySpecReduce_3 7# happyReduction_14 -happyReduction_14 happy_x_3 +happyReduce_13 = happySpecReduce_3 7# happyReduction_13 +happyReduction_13 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_2 of { happy_var_2 -> @@ -564,30 +555,23 @@ happyReduction_14 happy_x_3 (DeriveDecl happy_var_2 happy_var_3 )}} -happyReduce_15 = happySpecReduce_0 8# happyReduction_15 -happyReduction_15 = happyIn13 +happyReduce_14 = happySpecReduce_0 8# happyReduction_14 +happyReduction_14 = happyIn13 ([] ) -happyReduce_16 = happySpecReduce_1 8# happyReduction_16 -happyReduction_16 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn13 - ((:[]) happy_var_1 - )} - -happyReduce_17 = happySpecReduce_3 8# happyReduction_17 -happyReduction_17 happy_x_3 +happyReduce_15 = happySpecReduce_3 8# happyReduction_15 +happyReduction_15 happy_x_3 happy_x_2 happy_x_1 - = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut13 happy_x_3 of { happy_var_3 -> + = case happyOut13 happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_2 of { happy_var_2 -> happyIn13 - ((:) happy_var_1 happy_var_3 + (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_18 = happySpecReduce_3 9# happyReduction_18 -happyReduction_18 happy_x_3 +happyReduce_16 = happySpecReduce_3 9# happyReduction_16 +happyReduction_16 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -596,20 +580,20 @@ happyReduction_18 happy_x_3 (ConsDecl happy_var_1 happy_var_3 )}} -happyReduce_19 = happySpecReduce_0 10# happyReduction_19 -happyReduction_19 = happyIn15 +happyReduce_17 = happySpecReduce_0 10# happyReduction_17 +happyReduction_17 = happyIn15 ([] ) -happyReduce_20 = happySpecReduce_1 10# happyReduction_20 -happyReduction_20 happy_x_1 +happyReduce_18 = happySpecReduce_1 10# happyReduction_18 +happyReduction_18 happy_x_1 = case happyOut14 happy_x_1 of { happy_var_1 -> happyIn15 ((:[]) happy_var_1 )} -happyReduce_21 = happySpecReduce_3 10# happyReduction_21 -happyReduction_21 happy_x_3 +happyReduce_19 = happySpecReduce_3 10# happyReduction_19 +happyReduction_19 happy_x_3 happy_x_2 happy_x_1 = case happyOut14 happy_x_1 of { happy_var_1 -> @@ -618,21 +602,21 @@ happyReduction_21 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_22 = happySpecReduce_2 11# happyReduction_22 -happyReduction_22 happy_x_2 +happyReduce_20 = happySpecReduce_2 11# happyReduction_20 +happyReduction_20 happy_x_2 happy_x_1 = case happyOut28 happy_x_2 of { happy_var_2 -> happyIn16 (GuardExp happy_var_2 )} -happyReduce_23 = happySpecReduce_0 11# happyReduction_23 -happyReduction_23 = happyIn16 +happyReduce_21 = happySpecReduce_0 11# happyReduction_21 +happyReduction_21 = happyIn16 (GuardNo ) -happyReduce_24 = happySpecReduce_3 12# happyReduction_24 -happyReduction_24 happy_x_3 +happyReduce_22 = happySpecReduce_3 12# happyReduction_22 +happyReduction_22 happy_x_3 happy_x_2 happy_x_1 = case happyOut18 happy_x_1 of { happy_var_1 -> @@ -641,15 +625,15 @@ happyReduction_24 happy_x_3 (POr happy_var_1 happy_var_3 )}} -happyReduce_25 = happySpecReduce_1 12# happyReduction_25 -happyReduction_25 happy_x_1 +happyReduce_23 = happySpecReduce_1 12# happyReduction_23 +happyReduction_23 happy_x_1 = case happyOut18 happy_x_1 of { happy_var_1 -> happyIn17 (happy_var_1 )} -happyReduce_26 = happySpecReduce_3 13# happyReduction_26 -happyReduction_26 happy_x_3 +happyReduce_24 = happySpecReduce_3 13# happyReduction_24 +happyReduction_24 happy_x_3 happy_x_2 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> @@ -658,15 +642,15 @@ happyReduction_26 happy_x_3 (PListCons happy_var_1 happy_var_3 )}} -happyReduce_27 = happySpecReduce_1 13# happyReduction_27 -happyReduction_27 happy_x_1 +happyReduce_25 = happySpecReduce_1 13# happyReduction_25 +happyReduction_25 happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> happyIn18 (happy_var_1 )} -happyReduce_28 = happySpecReduce_3 14# happyReduction_28 -happyReduction_28 happy_x_3 +happyReduce_26 = happySpecReduce_3 14# happyReduction_26 +happyReduction_26 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -676,15 +660,15 @@ happyReduction_28 happy_x_3 (PConsTop happy_var_1 happy_var_2 (reverse happy_var_3) )}}} -happyReduce_29 = happySpecReduce_1 14# happyReduction_29 -happyReduction_29 happy_x_1 +happyReduce_27 = happySpecReduce_1 14# happyReduction_27 +happyReduction_27 happy_x_1 = case happyOut20 happy_x_1 of { happy_var_1 -> happyIn19 (happy_var_1 )} -happyReduce_30 = happyReduce 4# 15# happyReduction_30 -happyReduction_30 (happy_x_4 `HappyStk` +happyReduce_28 = happyReduce 4# 15# happyReduction_28 +happyReduction_28 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -694,15 +678,15 @@ happyReduction_30 (happy_x_4 `HappyStk` (PRec happy_var_3 ) `HappyStk` happyRest} -happyReduce_31 = happySpecReduce_2 15# happyReduction_31 -happyReduction_31 happy_x_2 +happyReduce_29 = happySpecReduce_2 15# happyReduction_29 +happyReduction_29 happy_x_2 happy_x_1 = happyIn20 (PEmptyList ) -happyReduce_32 = happySpecReduce_3 15# happyReduction_32 -happyReduction_32 happy_x_3 +happyReduce_30 = happySpecReduce_3 15# happyReduction_30 +happyReduction_30 happy_x_3 happy_x_2 happy_x_1 = case happyOut22 happy_x_2 of { happy_var_2 -> @@ -710,8 +694,8 @@ happyReduction_32 happy_x_3 (PList happy_var_2 )} -happyReduce_33 = happyReduce 5# 15# happyReduction_33 -happyReduction_33 (happy_x_5 `HappyStk` +happyReduce_31 = happyReduce 5# 15# happyReduction_31 +happyReduction_31 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -723,41 +707,41 @@ happyReduction_33 (happy_x_5 `HappyStk` (PTuple happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_34 = happySpecReduce_1 15# happyReduction_34 -happyReduction_34 happy_x_1 +happyReduce_32 = happySpecReduce_1 15# happyReduction_32 +happyReduction_32 happy_x_1 = happyIn20 (PType ) -happyReduce_35 = happySpecReduce_1 15# happyReduction_35 -happyReduction_35 happy_x_1 +happyReduce_33 = happySpecReduce_1 15# happyReduction_33 +happyReduction_33 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn20 (PStr happy_var_1 )} -happyReduce_36 = happySpecReduce_1 15# happyReduction_36 -happyReduction_36 happy_x_1 +happyReduce_34 = happySpecReduce_1 15# happyReduction_34 +happyReduction_34 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn20 (PInt happy_var_1 )} -happyReduce_37 = happySpecReduce_1 15# happyReduction_37 -happyReduction_37 happy_x_1 +happyReduce_35 = happySpecReduce_1 15# happyReduction_35 +happyReduction_35 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn20 (PVar happy_var_1 )} -happyReduce_38 = happySpecReduce_1 15# happyReduction_38 -happyReduction_38 happy_x_1 +happyReduce_36 = happySpecReduce_1 15# happyReduction_36 +happyReduction_36 happy_x_1 = happyIn20 (PWild ) -happyReduce_39 = happySpecReduce_3 15# happyReduction_39 -happyReduction_39 happy_x_3 +happyReduce_37 = happySpecReduce_3 15# happyReduction_37 +happyReduction_37 happy_x_3 happy_x_2 happy_x_1 = case happyOut17 happy_x_2 of { happy_var_2 -> @@ -765,22 +749,22 @@ happyReduction_39 happy_x_3 (happy_var_2 )} -happyReduce_40 = happySpecReduce_1 16# happyReduction_40 -happyReduction_40 happy_x_1 +happyReduce_38 = happySpecReduce_1 16# happyReduction_38 +happyReduction_38 happy_x_1 = case happyOut17 happy_x_1 of { happy_var_1 -> happyIn21 (CommaPattern happy_var_1 )} -happyReduce_41 = happySpecReduce_1 17# happyReduction_41 -happyReduction_41 happy_x_1 +happyReduce_39 = happySpecReduce_1 17# happyReduction_39 +happyReduction_39 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> happyIn22 ((:[]) happy_var_1 )} -happyReduce_42 = happySpecReduce_3 17# happyReduction_42 -happyReduction_42 happy_x_3 +happyReduce_40 = happySpecReduce_3 17# happyReduction_40 +happyReduction_40 happy_x_3 happy_x_2 happy_x_1 = case happyOut21 happy_x_1 of { happy_var_1 -> @@ -789,13 +773,13 @@ happyReduction_42 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_43 = happySpecReduce_0 18# happyReduction_43 -happyReduction_43 = happyIn23 +happyReduce_41 = happySpecReduce_0 18# happyReduction_41 +happyReduction_41 = happyIn23 ([] ) -happyReduce_44 = happySpecReduce_2 18# happyReduction_44 -happyReduction_44 happy_x_2 +happyReduce_42 = happySpecReduce_2 18# happyReduction_42 +happyReduction_42 happy_x_2 happy_x_1 = case happyOut23 happy_x_1 of { happy_var_1 -> case happyOut20 happy_x_2 of { happy_var_2 -> @@ -803,8 +787,8 @@ happyReduction_44 happy_x_2 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_45 = happySpecReduce_3 19# happyReduction_45 -happyReduction_45 happy_x_3 +happyReduce_43 = happySpecReduce_3 19# happyReduction_43 +happyReduction_43 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -813,20 +797,20 @@ happyReduction_45 happy_x_3 (FieldPattern happy_var_1 happy_var_3 )}} -happyReduce_46 = happySpecReduce_0 20# happyReduction_46 -happyReduction_46 = happyIn25 +happyReduce_44 = happySpecReduce_0 20# happyReduction_44 +happyReduction_44 = happyIn25 ([] ) -happyReduce_47 = happySpecReduce_1 20# happyReduction_47 -happyReduction_47 happy_x_1 +happyReduce_45 = happySpecReduce_1 20# happyReduction_45 +happyReduction_45 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> happyIn25 ((:[]) happy_var_1 )} -happyReduce_48 = happySpecReduce_3 20# happyReduction_48 -happyReduction_48 happy_x_3 +happyReduce_46 = happySpecReduce_3 20# happyReduction_46 +happyReduction_46 happy_x_3 happy_x_2 happy_x_1 = case happyOut24 happy_x_1 of { happy_var_1 -> @@ -835,8 +819,8 @@ happyReduction_48 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_49 = happyReduce 7# 21# happyReduction_49 -happyReduction_49 (happy_x_7 `HappyStk` +happyReduce_47 = happyReduce 7# 21# happyReduction_47 +happyReduction_47 (happy_x_7 `HappyStk` happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` @@ -851,8 +835,8 @@ happyReduction_49 (happy_x_7 `HappyStk` (EPi happy_var_2 happy_var_4 happy_var_7 ) `HappyStk` happyRest}}} -happyReduce_50 = happySpecReduce_3 21# happyReduction_50 -happyReduction_50 happy_x_3 +happyReduce_48 = happySpecReduce_3 21# happyReduction_48 +happyReduction_48 happy_x_3 happy_x_2 happy_x_1 = case happyOut28 happy_x_1 of { happy_var_1 -> @@ -861,28 +845,28 @@ happyReduction_50 happy_x_3 (EPiNoVar happy_var_1 happy_var_3 )}} -happyReduce_51 = happySpecReduce_1 21# happyReduction_51 -happyReduction_51 happy_x_1 +happyReduce_49 = happySpecReduce_1 21# happyReduction_49 +happyReduction_49 happy_x_1 = case happyOut28 happy_x_1 of { happy_var_1 -> happyIn26 (happy_var_1 )} -happyReduce_52 = happySpecReduce_1 22# happyReduction_52 -happyReduction_52 happy_x_1 +happyReduce_50 = happySpecReduce_1 22# happyReduction_50 +happyReduction_50 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn27 (VVar happy_var_1 )} -happyReduce_53 = happySpecReduce_1 22# happyReduction_53 -happyReduction_53 happy_x_1 +happyReduce_51 = happySpecReduce_1 22# happyReduction_51 +happyReduction_51 happy_x_1 = happyIn27 (VWild ) -happyReduce_54 = happyReduce 4# 23# happyReduction_54 -happyReduction_54 (happy_x_4 `HappyStk` +happyReduce_52 = happyReduce 4# 23# happyReduction_52 +happyReduction_52 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -893,8 +877,8 @@ happyReduction_54 (happy_x_4 `HappyStk` (EAbs happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_55 = happyReduce 6# 23# happyReduction_55 -happyReduction_55 (happy_x_6 `HappyStk` +happyReduce_53 = happyReduce 6# 23# happyReduction_53 +happyReduction_53 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -907,8 +891,8 @@ happyReduction_55 (happy_x_6 `HappyStk` (ELet happy_var_3 happy_var_6 ) `HappyStk` happyRest}} -happyReduce_56 = happyReduce 6# 23# happyReduction_56 -happyReduction_56 (happy_x_6 `HappyStk` +happyReduce_54 = happyReduce 6# 23# happyReduction_54 +happyReduction_54 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -921,8 +905,8 @@ happyReduction_56 (happy_x_6 `HappyStk` (ECase happy_var_2 happy_var_5 ) `HappyStk` happyRest}} -happyReduce_57 = happyReduce 6# 23# happyReduction_57 -happyReduction_57 (happy_x_6 `HappyStk` +happyReduce_55 = happyReduce 6# 23# happyReduction_55 +happyReduction_55 (happy_x_6 `HappyStk` happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` @@ -936,8 +920,8 @@ happyReduction_57 (happy_x_6 `HappyStk` (EIf happy_var_2 happy_var_4 happy_var_6 ) `HappyStk` happyRest}}} -happyReduce_58 = happyReduce 5# 23# happyReduction_58 -happyReduction_58 (happy_x_5 `HappyStk` +happyReduce_56 = happyReduce 5# 23# happyReduction_56 +happyReduction_56 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -949,15 +933,15 @@ happyReduction_58 (happy_x_5 `HappyStk` (EDo (reverse happy_var_3) happy_var_4 ) `HappyStk` happyRest}} -happyReduce_59 = happySpecReduce_1 23# happyReduction_59 -happyReduction_59 happy_x_1 +happyReduce_57 = happySpecReduce_1 23# happyReduction_57 +happyReduction_57 happy_x_1 = case happyOut50 happy_x_1 of { happy_var_1 -> happyIn28 (happy_var_1 )} -happyReduce_60 = happyReduce 5# 24# happyReduction_60 -happyReduction_60 (happy_x_5 `HappyStk` +happyReduce_58 = happyReduce 5# 24# happyReduction_58 +happyReduction_58 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -970,20 +954,20 @@ happyReduction_60 (happy_x_5 `HappyStk` (LetDef happy_var_1 happy_var_3 happy_var_5 ) `HappyStk` happyRest}}} -happyReduce_61 = happySpecReduce_0 25# happyReduction_61 -happyReduction_61 = happyIn30 +happyReduce_59 = happySpecReduce_0 25# happyReduction_59 +happyReduction_59 = happyIn30 ([] ) -happyReduce_62 = happySpecReduce_1 25# happyReduction_62 -happyReduction_62 happy_x_1 +happyReduce_60 = happySpecReduce_1 25# happyReduction_60 +happyReduction_60 happy_x_1 = case happyOut29 happy_x_1 of { happy_var_1 -> happyIn30 ((:[]) happy_var_1 )} -happyReduce_63 = happySpecReduce_3 25# happyReduction_63 -happyReduction_63 happy_x_3 +happyReduce_61 = happySpecReduce_3 25# happyReduction_61 +happyReduction_61 happy_x_3 happy_x_2 happy_x_1 = case happyOut29 happy_x_1 of { happy_var_1 -> @@ -992,8 +976,8 @@ happyReduction_63 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_64 = happyReduce 4# 26# happyReduction_64 -happyReduction_64 (happy_x_4 `HappyStk` +happyReduce_62 = happyReduce 4# 26# happyReduction_62 +happyReduction_62 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1005,20 +989,20 @@ happyReduction_64 (happy_x_4 `HappyStk` (Case happy_var_1 happy_var_2 happy_var_4 ) `HappyStk` happyRest}}} -happyReduce_65 = happySpecReduce_0 27# happyReduction_65 -happyReduction_65 = happyIn32 +happyReduce_63 = happySpecReduce_0 27# happyReduction_63 +happyReduction_63 = happyIn32 ([] ) -happyReduce_66 = happySpecReduce_1 27# happyReduction_66 -happyReduction_66 happy_x_1 +happyReduce_64 = happySpecReduce_1 27# happyReduction_64 +happyReduction_64 happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> happyIn32 ((:[]) happy_var_1 )} -happyReduce_67 = happySpecReduce_3 27# happyReduction_67 -happyReduction_67 happy_x_3 +happyReduce_65 = happySpecReduce_3 27# happyReduction_65 +happyReduction_65 happy_x_3 happy_x_2 happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> @@ -1027,8 +1011,8 @@ happyReduction_67 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_68 = happySpecReduce_3 28# happyReduction_68 -happyReduction_68 happy_x_3 +happyReduce_66 = happySpecReduce_3 28# happyReduction_66 +happyReduction_66 happy_x_3 happy_x_2 happy_x_1 = case happyOut27 happy_x_1 of { happy_var_1 -> @@ -1037,20 +1021,20 @@ happyReduction_68 happy_x_3 (BindVar happy_var_1 happy_var_3 )}} -happyReduce_69 = happySpecReduce_1 28# happyReduction_69 -happyReduction_69 happy_x_1 +happyReduce_67 = happySpecReduce_1 28# happyReduction_67 +happyReduction_67 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> happyIn33 (BindNoVar happy_var_1 )} -happyReduce_70 = happySpecReduce_0 29# happyReduction_70 -happyReduction_70 = happyIn34 +happyReduce_68 = happySpecReduce_0 29# happyReduction_68 +happyReduction_68 = happyIn34 ([] ) -happyReduce_71 = happySpecReduce_3 29# happyReduction_71 -happyReduction_71 happy_x_3 +happyReduce_69 = happySpecReduce_3 29# happyReduction_69 +happyReduction_69 happy_x_3 happy_x_2 happy_x_1 = case happyOut34 happy_x_1 of { happy_var_1 -> @@ -1059,8 +1043,8 @@ happyReduction_71 happy_x_3 (flip (:) happy_var_1 happy_var_2 )}} -happyReduce_72 = happySpecReduce_3 30# happyReduction_72 -happyReduction_72 happy_x_3 +happyReduce_70 = happySpecReduce_3 30# happyReduction_70 +happyReduction_70 happy_x_3 happy_x_2 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> @@ -1069,8 +1053,8 @@ happyReduction_72 happy_x_3 (EBind happy_var_1 happy_var_3 )}} -happyReduce_73 = happySpecReduce_3 30# happyReduction_73 -happyReduction_73 happy_x_3 +happyReduce_71 = happySpecReduce_3 30# happyReduction_71 +happyReduction_71 happy_x_3 happy_x_2 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> @@ -1079,15 +1063,15 @@ happyReduction_73 happy_x_3 (EBindC happy_var_1 happy_var_3 )}} -happyReduce_74 = happySpecReduce_1 30# happyReduction_74 -happyReduction_74 happy_x_1 +happyReduce_72 = happySpecReduce_1 30# happyReduction_72 +happyReduction_72 happy_x_1 = case happyOut36 happy_x_1 of { happy_var_1 -> happyIn35 (happy_var_1 )} -happyReduce_75 = happySpecReduce_3 31# happyReduction_75 -happyReduction_75 happy_x_3 +happyReduce_73 = happySpecReduce_3 31# happyReduction_73 +happyReduction_73 happy_x_3 happy_x_2 happy_x_1 = case happyOut37 happy_x_1 of { happy_var_1 -> @@ -1096,15 +1080,15 @@ happyReduction_75 happy_x_3 (EOr happy_var_1 happy_var_3 )}} -happyReduce_76 = happySpecReduce_1 31# happyReduction_76 -happyReduction_76 happy_x_1 +happyReduce_74 = happySpecReduce_1 31# happyReduction_74 +happyReduction_74 happy_x_1 = case happyOut37 happy_x_1 of { happy_var_1 -> happyIn36 (happy_var_1 )} -happyReduce_77 = happySpecReduce_3 32# happyReduction_77 -happyReduction_77 happy_x_3 +happyReduce_75 = happySpecReduce_3 32# happyReduction_75 +happyReduction_75 happy_x_3 happy_x_2 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> @@ -1113,13 +1097,33 @@ happyReduction_77 happy_x_3 (EAnd happy_var_1 happy_var_3 )}} -happyReduce_78 = happySpecReduce_1 32# happyReduction_78 -happyReduction_78 happy_x_1 +happyReduce_76 = happySpecReduce_1 32# happyReduction_76 +happyReduction_76 happy_x_1 = case happyOut38 happy_x_1 of { happy_var_1 -> happyIn37 (happy_var_1 )} +happyReduce_77 = happySpecReduce_3 33# happyReduction_77 +happyReduction_77 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (EEq happy_var_1 happy_var_3 + )}} + +happyReduce_78 = happySpecReduce_3 33# happyReduction_78 +happyReduction_78 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut39 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + (ENe happy_var_1 happy_var_3 + )}} + happyReduce_79 = happySpecReduce_3 33# happyReduction_79 happyReduction_79 happy_x_3 happy_x_2 @@ -1127,7 +1131,7 @@ happyReduction_79 happy_x_3 = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (EEq happy_var_1 happy_var_3 + (ELt happy_var_1 happy_var_3 )}} happyReduce_80 = happySpecReduce_3 33# happyReduction_80 @@ -1137,7 +1141,7 @@ happyReduction_80 happy_x_3 = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (ENe happy_var_1 happy_var_3 + (ELe happy_var_1 happy_var_3 )}} happyReduce_81 = happySpecReduce_3 33# happyReduction_81 @@ -1147,31 +1151,11 @@ happyReduction_81 happy_x_3 = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn38 - (ELt happy_var_1 happy_var_3 + (EGt happy_var_1 happy_var_3 )}} happyReduce_82 = happySpecReduce_3 33# happyReduction_82 happyReduction_82 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_3 of { happy_var_3 -> - happyIn38 - (ELe happy_var_1 happy_var_3 - )}} - -happyReduce_83 = happySpecReduce_3 33# happyReduction_83 -happyReduction_83 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_3 of { happy_var_3 -> - happyIn38 - (EGt happy_var_1 happy_var_3 - )}} - -happyReduce_84 = happySpecReduce_3 33# happyReduction_84 -happyReduction_84 happy_x_3 happy_x_2 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> @@ -1180,15 +1164,15 @@ happyReduction_84 happy_x_3 (EGe happy_var_1 happy_var_3 )}} -happyReduce_85 = happySpecReduce_1 33# happyReduction_85 -happyReduction_85 happy_x_1 +happyReduce_83 = happySpecReduce_1 33# happyReduction_83 +happyReduction_83 happy_x_1 = case happyOut39 happy_x_1 of { happy_var_1 -> happyIn38 (happy_var_1 )} -happyReduce_86 = happySpecReduce_3 34# happyReduction_86 -happyReduction_86 happy_x_3 +happyReduce_84 = happySpecReduce_3 34# happyReduction_84 +happyReduction_84 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1197,15 +1181,15 @@ happyReduction_86 happy_x_3 (EListCons happy_var_1 happy_var_3 )}} -happyReduce_87 = happySpecReduce_1 34# happyReduction_87 -happyReduction_87 happy_x_1 +happyReduce_85 = happySpecReduce_1 34# happyReduction_85 +happyReduction_85 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> happyIn39 (happy_var_1 )} -happyReduce_88 = happySpecReduce_3 35# happyReduction_88 -happyReduction_88 happy_x_3 +happyReduce_86 = happySpecReduce_3 35# happyReduction_86 +happyReduction_86 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1214,8 +1198,8 @@ happyReduction_88 happy_x_3 (EAdd happy_var_1 happy_var_3 )}} -happyReduce_89 = happySpecReduce_3 35# happyReduction_89 -happyReduction_89 happy_x_3 +happyReduce_87 = happySpecReduce_3 35# happyReduction_87 +happyReduction_87 happy_x_3 happy_x_2 happy_x_1 = case happyOut40 happy_x_1 of { happy_var_1 -> @@ -1224,15 +1208,15 @@ happyReduction_89 happy_x_3 (ESub happy_var_1 happy_var_3 )}} -happyReduce_90 = happySpecReduce_1 35# happyReduction_90 -happyReduction_90 happy_x_1 +happyReduce_88 = happySpecReduce_1 35# happyReduction_88 +happyReduction_88 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> happyIn40 (happy_var_1 )} -happyReduce_91 = happySpecReduce_3 36# happyReduction_91 -happyReduction_91 happy_x_3 +happyReduce_89 = happySpecReduce_3 36# happyReduction_89 +happyReduction_89 happy_x_3 happy_x_2 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> @@ -1241,8 +1225,8 @@ happyReduction_91 happy_x_3 (EMul happy_var_1 happy_var_3 )}} -happyReduce_92 = happySpecReduce_3 36# happyReduction_92 -happyReduction_92 happy_x_3 +happyReduce_90 = happySpecReduce_3 36# happyReduction_90 +happyReduction_90 happy_x_3 happy_x_2 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> @@ -1251,8 +1235,8 @@ happyReduction_92 happy_x_3 (EDiv happy_var_1 happy_var_3 )}} -happyReduce_93 = happySpecReduce_3 36# happyReduction_93 -happyReduction_93 happy_x_3 +happyReduce_91 = happySpecReduce_3 36# happyReduction_91 +happyReduction_91 happy_x_3 happy_x_2 happy_x_1 = case happyOut41 happy_x_1 of { happy_var_1 -> @@ -1261,30 +1245,30 @@ happyReduction_93 happy_x_3 (EMod happy_var_1 happy_var_3 )}} -happyReduce_94 = happySpecReduce_1 36# happyReduction_94 -happyReduction_94 happy_x_1 +happyReduce_92 = happySpecReduce_1 36# happyReduction_92 +happyReduction_92 happy_x_1 = case happyOut42 happy_x_1 of { happy_var_1 -> happyIn41 (happy_var_1 )} -happyReduce_95 = happySpecReduce_2 37# happyReduction_95 -happyReduction_95 happy_x_2 +happyReduce_93 = happySpecReduce_2 37# happyReduction_93 +happyReduction_93 happy_x_2 happy_x_1 = case happyOut42 happy_x_2 of { happy_var_2 -> happyIn42 (ENeg happy_var_2 )} -happyReduce_96 = happySpecReduce_1 37# happyReduction_96 -happyReduction_96 happy_x_1 +happyReduce_94 = happySpecReduce_1 37# happyReduction_94 +happyReduction_94 happy_x_1 = case happyOut43 happy_x_1 of { happy_var_1 -> happyIn42 (happy_var_1 )} -happyReduce_97 = happySpecReduce_2 38# happyReduction_97 -happyReduction_97 happy_x_2 +happyReduce_95 = happySpecReduce_2 38# happyReduction_95 +happyReduction_95 happy_x_2 happy_x_1 = case happyOut43 happy_x_1 of { happy_var_1 -> case happyOut44 happy_x_2 of { happy_var_2 -> @@ -1292,15 +1276,15 @@ happyReduction_97 happy_x_2 (EApp happy_var_1 happy_var_2 )}} -happyReduce_98 = happySpecReduce_1 38# happyReduction_98 -happyReduction_98 happy_x_1 +happyReduce_96 = happySpecReduce_1 38# happyReduction_96 +happyReduction_96 happy_x_1 = case happyOut44 happy_x_1 of { happy_var_1 -> happyIn43 (happy_var_1 )} -happyReduce_99 = happySpecReduce_3 39# happyReduction_99 -happyReduction_99 happy_x_3 +happyReduce_97 = happySpecReduce_3 39# happyReduction_97 +happyReduction_97 happy_x_3 happy_x_2 happy_x_1 = case happyOut44 happy_x_1 of { happy_var_1 -> @@ -1309,15 +1293,15 @@ happyReduction_99 happy_x_3 (EProj happy_var_1 happy_var_3 )}} -happyReduce_100 = happySpecReduce_1 39# happyReduction_100 -happyReduction_100 happy_x_1 +happyReduce_98 = happySpecReduce_1 39# happyReduction_98 +happyReduction_98 happy_x_1 = case happyOut45 happy_x_1 of { happy_var_1 -> happyIn44 (happy_var_1 )} -happyReduce_101 = happyReduce 4# 40# happyReduction_101 -happyReduction_101 (happy_x_4 `HappyStk` +happyReduce_99 = happyReduce 4# 40# happyReduction_99 +happyReduction_99 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1327,8 +1311,8 @@ happyReduction_101 (happy_x_4 `HappyStk` (ERecType happy_var_3 ) `HappyStk` happyRest} -happyReduce_102 = happyReduce 4# 40# happyReduction_102 -happyReduction_102 (happy_x_4 `HappyStk` +happyReduce_100 = happyReduce 4# 40# happyReduction_100 +happyReduction_100 (happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` happy_x_1 `HappyStk` @@ -1338,15 +1322,15 @@ happyReduction_102 (happy_x_4 `HappyStk` (ERec happy_var_3 ) `HappyStk` happyRest} -happyReduce_103 = happySpecReduce_2 40# happyReduction_103 -happyReduction_103 happy_x_2 +happyReduce_101 = happySpecReduce_2 40# happyReduction_101 +happyReduction_101 happy_x_2 happy_x_1 = happyIn45 (EEmptyList ) -happyReduce_104 = happySpecReduce_3 40# happyReduction_104 -happyReduction_104 happy_x_3 +happyReduce_102 = happySpecReduce_3 40# happyReduction_102 +happyReduction_102 happy_x_3 happy_x_2 happy_x_1 = case happyOut51 happy_x_2 of { happy_var_2 -> @@ -1354,8 +1338,8 @@ happyReduction_104 happy_x_3 (EList happy_var_2 )} -happyReduce_105 = happyReduce 5# 40# happyReduction_105 -happyReduction_105 (happy_x_5 `HappyStk` +happyReduce_103 = happyReduce 5# 40# happyReduction_103 +happyReduction_103 (happy_x_5 `HappyStk` happy_x_4 `HappyStk` happy_x_3 `HappyStk` happy_x_2 `HappyStk` @@ -1367,48 +1351,48 @@ happyReduction_105 (happy_x_5 `HappyStk` (ETuple happy_var_2 happy_var_4 ) `HappyStk` happyRest}} -happyReduce_106 = happySpecReduce_1 40# happyReduction_106 -happyReduction_106 happy_x_1 +happyReduce_104 = happySpecReduce_1 40# happyReduction_104 +happyReduction_104 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> happyIn45 (EVar happy_var_1 )} -happyReduce_107 = happySpecReduce_1 40# happyReduction_107 -happyReduction_107 happy_x_1 +happyReduce_105 = happySpecReduce_1 40# happyReduction_105 +happyReduction_105 happy_x_1 = happyIn45 (EType ) -happyReduce_108 = happySpecReduce_1 40# happyReduction_108 -happyReduction_108 happy_x_1 +happyReduce_106 = happySpecReduce_1 40# happyReduction_106 +happyReduction_106 happy_x_1 = case happyOut6 happy_x_1 of { happy_var_1 -> happyIn45 (EStr happy_var_1 )} -happyReduce_109 = happySpecReduce_1 40# happyReduction_109 -happyReduction_109 happy_x_1 +happyReduce_107 = happySpecReduce_1 40# happyReduction_107 +happyReduction_107 happy_x_1 = case happyOut7 happy_x_1 of { happy_var_1 -> happyIn45 (EInteger happy_var_1 )} -happyReduce_110 = happySpecReduce_1 40# happyReduction_110 -happyReduction_110 happy_x_1 +happyReduce_108 = happySpecReduce_1 40# happyReduction_108 +happyReduction_108 happy_x_1 = case happyOut8 happy_x_1 of { happy_var_1 -> happyIn45 (EDouble happy_var_1 )} -happyReduce_111 = happySpecReduce_1 40# happyReduction_111 -happyReduction_111 happy_x_1 +happyReduce_109 = happySpecReduce_1 40# happyReduction_109 +happyReduction_109 happy_x_1 = happyIn45 (EMeta ) -happyReduce_112 = happySpecReduce_3 40# happyReduction_112 -happyReduction_112 happy_x_3 +happyReduce_110 = happySpecReduce_3 40# happyReduction_110 +happyReduction_110 happy_x_3 happy_x_2 happy_x_1 = case happyOut26 happy_x_2 of { happy_var_2 -> @@ -1416,8 +1400,8 @@ happyReduction_112 happy_x_3 (happy_var_2 )} -happyReduce_113 = happySpecReduce_3 41# happyReduction_113 -happyReduction_113 happy_x_3 +happyReduce_111 = happySpecReduce_3 41# happyReduction_111 +happyReduction_111 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -1426,20 +1410,20 @@ happyReduction_113 happy_x_3 (FieldType happy_var_1 happy_var_3 )}} -happyReduce_114 = happySpecReduce_0 42# happyReduction_114 -happyReduction_114 = happyIn47 +happyReduce_112 = happySpecReduce_0 42# happyReduction_112 +happyReduction_112 = happyIn47 ([] ) -happyReduce_115 = happySpecReduce_1 42# happyReduction_115 -happyReduction_115 happy_x_1 +happyReduce_113 = happySpecReduce_1 42# happyReduction_113 +happyReduction_113 happy_x_1 = case happyOut46 happy_x_1 of { happy_var_1 -> happyIn47 ((:[]) happy_var_1 )} -happyReduce_116 = happySpecReduce_3 42# happyReduction_116 -happyReduction_116 happy_x_3 +happyReduce_114 = happySpecReduce_3 42# happyReduction_114 +happyReduction_114 happy_x_3 happy_x_2 happy_x_1 = case happyOut46 happy_x_1 of { happy_var_1 -> @@ -1448,8 +1432,8 @@ happyReduction_116 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_117 = happySpecReduce_3 43# happyReduction_117 -happyReduction_117 happy_x_3 +happyReduce_115 = happySpecReduce_3 43# happyReduction_115 +happyReduction_115 happy_x_3 happy_x_2 happy_x_1 = case happyOut5 happy_x_1 of { happy_var_1 -> @@ -1458,20 +1442,20 @@ happyReduction_117 happy_x_3 (FieldValue happy_var_1 happy_var_3 )}} -happyReduce_118 = happySpecReduce_0 44# happyReduction_118 -happyReduction_118 = happyIn49 +happyReduce_116 = happySpecReduce_0 44# happyReduction_116 +happyReduction_116 = happyIn49 ([] ) -happyReduce_119 = happySpecReduce_1 44# happyReduction_119 -happyReduction_119 happy_x_1 +happyReduce_117 = happySpecReduce_1 44# happyReduction_117 +happyReduction_117 happy_x_1 = case happyOut48 happy_x_1 of { happy_var_1 -> happyIn49 ((:[]) happy_var_1 )} -happyReduce_120 = happySpecReduce_3 44# happyReduction_120 -happyReduction_120 happy_x_3 +happyReduce_118 = happySpecReduce_3 44# happyReduction_118 +happyReduction_118 happy_x_3 happy_x_2 happy_x_1 = case happyOut48 happy_x_1 of { happy_var_1 -> @@ -1480,22 +1464,22 @@ happyReduction_120 happy_x_3 ((:) happy_var_1 happy_var_3 )}} -happyReduce_121 = happySpecReduce_1 45# happyReduction_121 -happyReduction_121 happy_x_1 +happyReduce_119 = happySpecReduce_1 45# happyReduction_119 +happyReduction_119 happy_x_1 = case happyOut35 happy_x_1 of { happy_var_1 -> happyIn50 (happy_var_1 )} -happyReduce_122 = happySpecReduce_1 46# happyReduction_122 -happyReduction_122 happy_x_1 +happyReduce_120 = happySpecReduce_1 46# happyReduction_120 +happyReduction_120 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> happyIn51 ((:[]) happy_var_1 )} -happyReduce_123 = happySpecReduce_3 46# happyReduction_123 -happyReduction_123 happy_x_3 +happyReduce_121 = happySpecReduce_3 46# happyReduction_121 +happyReduction_121 happy_x_3 happy_x_2 happy_x_1 = case happyOut26 happy_x_1 of { happy_var_1 -> diff --git a/src/Transfer/Syntax/Par.y b/src/Transfer/Syntax/Par.y index 61a2788ef..9504268f6 100644 --- a/src/Transfer/Syntax/Par.y +++ b/src/Transfer/Syntax/Par.y @@ -78,7 +78,7 @@ Integer :: { Integer } : L_integ { (read $1) :: Integer } Double :: { Double } : L_doubl { (read $1) :: Double } Module :: { Module } -Module : ListImport ListDecl { Module $1 $2 } +Module : ListImport ListDecl { Module (reverse $1) (reverse $2) } Import :: { Import } @@ -87,8 +87,7 @@ Import : 'import' Ident { Import $2 } ListImport :: { [Import] } ListImport : {- empty -} { [] } - | Import { (:[]) $1 } - | Import ';' ListImport { (:) $1 $3 } + | ListImport Import ';' { flip (:) $1 $2 } Decl :: { Decl } @@ -100,8 +99,7 @@ Decl : 'data' Ident ':' Exp 'where' '{' ListConsDecl '}' { DataDecl $2 $4 $7 } ListDecl :: { [Decl] } ListDecl : {- empty -} { [] } - | Decl { (:[]) $1 } - | Decl ';' ListDecl { (:) $1 $3 } + | ListDecl Decl ';' { flip (:) $1 $2 } ConsDecl :: { ConsDecl } diff --git a/src/Transfer/Syntax/Print.hs b/src/Transfer/Syntax/Print.hs index 101ec29eb..fc0bab0fe 100644 --- a/src/Transfer/Syntax/Print.hs +++ b/src/Transfer/Syntax/Print.hs @@ -154,12 +154,10 @@ instance Print (Tree c) where instance Print [Import] where prt _ es = case es of [] -> (concatD []) - [x] -> (concatD [prt 0 x]) x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs]) instance Print [Decl] where prt _ es = case es of [] -> (concatD []) - [x] -> (concatD [prt 0 x]) x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs]) instance Print [ConsDecl] where prt _ es = case es of diff --git a/src/Transfer/Syntax/Syntax.cf b/src/Transfer/Syntax/Syntax.cf index b38dd115f..1b8f8cb4e 100644 --- a/src/Transfer/Syntax/Syntax.cf +++ b/src/Transfer/Syntax/Syntax.cf @@ -10,13 +10,16 @@ comment "{-" "-}" ; Module. Module ::= [Import] [Decl] ; Import. Import ::= "import" Ident ; -separator Import ";" ; +-- FIXME: this is terminator to ensure that the pretty printer +-- produces a semicolon after the last import. This could cause +-- problems in a program which only does imports and uses layout syntax. +terminator Import ";" ; DataDecl. Decl ::= "data" Ident ":" Exp "where" "{" [ConsDecl] "}" ; TypeDecl. Decl ::= Ident ":" Exp ; ValueDecl. Decl ::= Ident [Pattern] Guard "=" Exp ; DeriveDecl. Decl ::= "derive" Ident Ident ; -separator Decl ";" ; +terminator Decl ";" ; ConsDecl. ConsDecl ::= Ident ":" Exp ; separator ConsDecl ";" ;