summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndresSicardRamirez <>2015-05-25 16:37:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2015-05-25 16:37:00 (GMT)
commit25c6bd58d80a01efbeb4dc32799b1175a5317c78 (patch)
treeef8305af8b8627e8284437cdadc945e0971102c1
parenteaa975f823eb739e693cced4103486d26d833f97 (diff)
version 2.4.2.32.4.2.3
-rw-r--r--Agda.cabal215
-rw-r--r--CHANGELOG260
-rw-r--r--LICENSE2
-rw-r--r--README.md41
-rw-r--r--dist/build/Agda/Syntax/Parser/Parser.hs2925
-rw-r--r--src/data/EpicInclude/AgdaPrelude.e207
-rw-r--r--src/data/EpicInclude/stdagda.c95
-rw-r--r--src/data/EpicInclude/stdagda.h41
-rw-r--r--src/data/emacs-mode/agda-input.el3
-rw-r--r--src/data/emacs-mode/agda2-mode.el191
-rw-r--r--src/data/emacs-mode/agda2.el6
-rw-r--r--src/full/Agda/Auto/Auto.hs126
-rw-r--r--src/full/Agda/Auto/CaseSplit.hs4
-rw-r--r--src/full/Agda/Auto/Convert.hs8
-rw-r--r--src/full/Agda/Auto/NarrowingSearch.hs17
-rw-r--r--src/full/Agda/Auto/SearchControl.hs41
-rw-r--r--src/full/Agda/Auto/Syntax.hs2
-rw-r--r--src/full/Agda/Auto/Typecheck.hs6
-rw-r--r--src/full/Agda/Compiler/CallCompiler.hs2
-rw-r--r--src/full/Agda/Compiler/Epic/Erasure.hs25
-rw-r--r--src/full/Agda/Compiler/Epic/ForceConstrs.hs18
-rw-r--r--src/full/Agda/Compiler/Epic/Forcing.hs2
-rw-r--r--src/full/Agda/Compiler/Epic/FromAgda.hs6
-rw-r--r--src/full/Agda/Compiler/Epic/Injection.hs23
-rw-r--r--src/full/Agda/Compiler/Epic/Interface.hs2
-rw-r--r--src/full/Agda/Compiler/Epic/Static.hs5
-rw-r--r--src/full/Agda/Compiler/JS/Compiler.hs17
-rw-r--r--src/full/Agda/Compiler/MAlonzo/Compiler.hs65
-rw-r--r--src/full/Agda/Compiler/MAlonzo/Pretty.hs6
-rw-r--r--src/full/Agda/Compiler/MAlonzo/Primitives.hs1
-rw-r--r--src/full/Agda/Interaction/BasicOps.hs86
-rw-r--r--src/full/Agda/Interaction/CommandLine.hs (renamed from src/full/Agda/Interaction/CommandLine/CommandLine.hs)30
-rw-r--r--src/full/Agda/Interaction/EmacsCommand.hs3
-rw-r--r--src/full/Agda/Interaction/Exceptions.hs6
-rw-r--r--src/full/Agda/Interaction/Highlighting/Generate.hs71
-rw-r--r--src/full/Agda/Interaction/Highlighting/HTML.hs61
-rw-r--r--src/full/Agda/Interaction/Highlighting/LaTeX.hs2
-rw-r--r--src/full/Agda/Interaction/Highlighting/Precise.hs18
-rw-r--r--src/full/Agda/Interaction/Imports.hs55
-rw-r--r--src/full/Agda/Interaction/InteractionTop.hs136
-rw-r--r--src/full/Agda/Interaction/InteractionTop.hs-boot5
-rw-r--r--src/full/Agda/Interaction/MakeCase.hs23
-rw-r--r--src/full/Agda/Interaction/Monad.hs3
-rw-r--r--src/full/Agda/Interaction/Options.hs133
-rw-r--r--src/full/Agda/Interaction/Response.hs5
-rw-r--r--src/full/Agda/Main.hs58
-rw-r--r--src/full/Agda/Syntax/Abstract.hs79
-rw-r--r--src/full/Agda/Syntax/Abstract/Copatterns.hs31
-rw-r--r--src/full/Agda/Syntax/Abstract/Name.hs44
-rw-r--r--src/full/Agda/Syntax/Abstract/Name.hs-boot10
-rw-r--r--src/full/Agda/Syntax/Abstract/Views.hs10
-rw-r--r--src/full/Agda/Syntax/Common.hs128
-rw-r--r--src/full/Agda/Syntax/Concrete.hs134
-rw-r--r--src/full/Agda/Syntax/Concrete/Definitions.hs232
-rw-r--r--src/full/Agda/Syntax/Concrete/Generic.hs9
-rw-r--r--src/full/Agda/Syntax/Concrete/Name.hs35
-rw-r--r--src/full/Agda/Syntax/Concrete/Operators.hs219
-rw-r--r--src/full/Agda/Syntax/Concrete/Operators/Parser.hs24
-rw-r--r--src/full/Agda/Syntax/Concrete/Pretty.hs117
-rw-r--r--src/full/Agda/Syntax/Fixity.hs110
-rw-r--r--src/full/Agda/Syntax/Fixity.hs-boot3
-rw-r--r--src/full/Agda/Syntax/Info.hs6
-rw-r--r--src/full/Agda/Syntax/Internal.hs484
-rw-r--r--src/full/Agda/Syntax/Internal/Defs.hs8
-rw-r--r--src/full/Agda/Syntax/Internal/Generic.hs11
-rw-r--r--src/full/Agda/Syntax/Internal/Pattern.hs30
-rw-r--r--src/full/Agda/Syntax/Notation.hs18
-rw-r--r--src/full/Agda/Syntax/Parser/LookAhead.hs2
-rw-r--r--src/full/Agda/Syntax/Parser/Monad.hs85
-rw-r--r--src/full/Agda/Syntax/Parser/Parser.y144
-rw-r--r--src/full/Agda/Syntax/Position.hs142
-rw-r--r--src/full/Agda/Syntax/Scope/Base.hs13
-rw-r--r--src/full/Agda/Syntax/Scope/Monad.hs84
-rw-r--r--src/full/Agda/Syntax/Translation/AbstractToConcrete.hs279
-rw-r--r--src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs297
-rw-r--r--src/full/Agda/Syntax/Translation/InternalToAbstract.hs539
-rw-r--r--src/full/Agda/Termination/CallGraph.hs39
-rw-r--r--src/full/Agda/Termination/CallMatrix.hs40
-rw-r--r--src/full/Agda/Termination/CutOff.hs4
-rw-r--r--src/full/Agda/Termination/Inlining.hs38
-rw-r--r--src/full/Agda/Termination/Monad.hs198
-rw-r--r--src/full/Agda/Termination/Order.hs9
-rw-r--r--src/full/Agda/Termination/SparseMatrix.hs18
-rw-r--r--src/full/Agda/Termination/TermCheck.hs480
-rw-r--r--src/full/Agda/Tests.hs2
-rw-r--r--src/full/Agda/TypeChecking/Abstract.hs14
-rw-r--r--src/full/Agda/TypeChecking/CheckInternal.hs51
-rw-r--r--src/full/Agda/TypeChecking/CompiledClause.hs12
-rw-r--r--src/full/Agda/TypeChecking/CompiledClause/Match.hs206
-rw-r--r--src/full/Agda/TypeChecking/Constraints.hs7
-rw-r--r--src/full/Agda/TypeChecking/Conversion.hs201
-rw-r--r--src/full/Agda/TypeChecking/Coverage.hs73
-rw-r--r--src/full/Agda/TypeChecking/Coverage/Match.hs11
-rw-r--r--src/full/Agda/TypeChecking/DisplayForm.hs16
-rw-r--r--src/full/Agda/TypeChecking/DropArgs.hs5
-rw-r--r--src/full/Agda/TypeChecking/Empty.hs38
-rw-r--r--src/full/Agda/TypeChecking/Errors.hs1824
-rw-r--r--src/full/Agda/TypeChecking/EtaContract.hs10
-rw-r--r--src/full/Agda/TypeChecking/Forcing.hs162
-rw-r--r--src/full/Agda/TypeChecking/Free.hs8
-rw-r--r--src/full/Agda/TypeChecking/Implicit.hs22
-rw-r--r--src/full/Agda/TypeChecking/Injectivity.hs8
-rw-r--r--src/full/Agda/TypeChecking/InstanceArguments.hs238
-rw-r--r--src/full/Agda/TypeChecking/Irrelevance.hs18
-rw-r--r--src/full/Agda/TypeChecking/Level.hs6
-rw-r--r--src/full/Agda/TypeChecking/MetaVars.hs97
-rw-r--r--src/full/Agda/TypeChecking/MetaVars/Mention.hs8
-rw-r--r--src/full/Agda/TypeChecking/MetaVars/Occurs.hs245
-rw-r--r--src/full/Agda/TypeChecking/Monad/Base.hs199
-rw-r--r--src/full/Agda/TypeChecking/Monad/Base.hs-boot2
-rw-r--r--src/full/Agda/TypeChecking/Monad/Base/Benchmark.hs25
-rw-r--r--src/full/Agda/TypeChecking/Monad/Base/KillRange.hs19
-rw-r--r--src/full/Agda/TypeChecking/Monad/Benchmark.hs102
-rw-r--r--src/full/Agda/TypeChecking/Monad/Builtin.hs51
-rw-r--r--src/full/Agda/TypeChecking/Monad/Constraints.hs2
-rw-r--r--src/full/Agda/TypeChecking/Monad/Context.hs24
-rw-r--r--src/full/Agda/TypeChecking/Monad/Exception.hs6
-rw-r--r--src/full/Agda/TypeChecking/Monad/MetaVars.hs50
-rw-r--r--src/full/Agda/TypeChecking/Monad/Mutual.hs9
-rw-r--r--src/full/Agda/TypeChecking/Monad/Options.hs29
-rw-r--r--src/full/Agda/TypeChecking/Monad/Signature.hs111
-rw-r--r--src/full/Agda/TypeChecking/Monad/SizedTypes.hs10
-rw-r--r--src/full/Agda/TypeChecking/Monad/State.hs9
-rw-r--r--src/full/Agda/TypeChecking/Monad/Statistics.hs16
-rw-r--r--src/full/Agda/TypeChecking/Monad/Trace.hs25
-rw-r--r--src/full/Agda/TypeChecking/Patterns/Abstract.hs9
-rw-r--r--src/full/Agda/TypeChecking/Patterns/Match.hs178
-rw-r--r--src/full/Agda/TypeChecking/Patterns/Match.hs-boot2
-rw-r--r--src/full/Agda/TypeChecking/Polarity.hs9
-rw-r--r--src/full/Agda/TypeChecking/Positivity.hs103
-rw-r--r--src/full/Agda/TypeChecking/Pretty.hs219
-rw-r--r--src/full/Agda/TypeChecking/Pretty.hs-boot3
-rw-r--r--src/full/Agda/TypeChecking/Primitive.hs325
-rw-r--r--src/full/Agda/TypeChecking/ProjectionLike.hs44
-rw-r--r--src/full/Agda/TypeChecking/Quote.hs10
-rw-r--r--src/full/Agda/TypeChecking/RecordPatterns.hs49
-rw-r--r--src/full/Agda/TypeChecking/Records.hs66
-rw-r--r--src/full/Agda/TypeChecking/Reduce.hs141
-rw-r--r--src/full/Agda/TypeChecking/Reduce/Monad.hs7
-rw-r--r--src/full/Agda/TypeChecking/Rewriting.hs192
-rw-r--r--src/full/Agda/TypeChecking/Rewriting.hs-boot2
-rw-r--r--src/full/Agda/TypeChecking/Rewriting/NonLinMatch.hs266
-rw-r--r--src/full/Agda/TypeChecking/Rules/Builtin.hs86
-rw-r--r--src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs5
-rw-r--r--src/full/Agda/TypeChecking/Rules/Data.hs18
-rw-r--r--src/full/Agda/TypeChecking/Rules/Decl.hs53
-rw-r--r--src/full/Agda/TypeChecking/Rules/Def.hs106
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS.hs132
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs28
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs4
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS/Problem.hs17
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS/ProblemRest.hs5
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS/Split.hs60
-rw-r--r--src/full/Agda/TypeChecking/Rules/LHS/Unify.hs132
-rw-r--r--src/full/Agda/TypeChecking/Rules/Record.hs11
-rw-r--r--src/full/Agda/TypeChecking/Rules/Term.hs230
-rw-r--r--src/full/Agda/TypeChecking/Rules/Term.hs-boot6
-rw-r--r--src/full/Agda/TypeChecking/Serialise.hs185
-rw-r--r--src/full/Agda/TypeChecking/SizedTypes.hs107
-rw-r--r--src/full/Agda/TypeChecking/SizedTypes/Solve.hs17
-rw-r--r--src/full/Agda/TypeChecking/SizedTypes/Syntax.hs15
-rw-r--r--src/full/Agda/TypeChecking/SizedTypes/WarshallSolver.hs81
-rw-r--r--src/full/Agda/TypeChecking/Substitute.hs191
-rw-r--r--src/full/Agda/TypeChecking/SyntacticEquality.hs16
-rw-r--r--src/full/Agda/TypeChecking/Telescope.hs36
-rw-r--r--src/full/Agda/TypeChecking/Test/Generators.hs14
-rw-r--r--src/full/Agda/TypeChecking/Unquote.hs9
-rw-r--r--src/full/Agda/TypeChecking/With.hs382
-rw-r--r--src/full/Agda/Utils/AssocList.hs2
-rw-r--r--src/full/Agda/Utils/Bag.hs15
-rw-r--r--src/full/Agda/Utils/BiMap.hs12
-rw-r--r--src/full/Agda/Utils/Cluster.hs6
-rw-r--r--src/full/Agda/Utils/Empty.hs2
-rw-r--r--src/full/Agda/Utils/Except.hs5
-rw-r--r--src/full/Agda/Utils/Favorites.hs34
-rw-r--r--src/full/Agda/Utils/FileName.hs10
-rw-r--r--src/full/Agda/Utils/Functor.hs17
-rw-r--r--src/full/Agda/Utils/Graph/AdjacencyMap.hs4
-rw-r--r--src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional.hs8
-rw-r--r--src/full/Agda/Utils/Impossible.hs2
-rw-r--r--src/full/Agda/Utils/Lens.hs18
-rw-r--r--src/full/Agda/Utils/Lens/Examples.hs2
-rw-r--r--src/full/Agda/Utils/List.hs4
-rw-r--r--src/full/Agda/Utils/ListT.hs116
-rw-r--r--src/full/Agda/Utils/ListT/Tests.hs52
-rw-r--r--src/full/Agda/Utils/Map/Compat.hs20
-rw-r--r--src/full/Agda/Utils/Maybe/Strict.hs15
-rw-r--r--src/full/Agda/Utils/Monad.hs20
-rw-r--r--src/full/Agda/Utils/Null.hs20
-rw-r--r--src/full/Agda/Utils/PartialOrd.hs6
-rw-r--r--src/full/Agda/Utils/Permutation.hs23
-rw-r--r--src/full/Agda/Utils/Permutation/Tests.hs10
-rw-r--r--src/full/Agda/Utils/Pointed.hs19
-rw-r--r--src/full/Agda/Utils/Pointer.hs4
-rw-r--r--src/full/Agda/Utils/Pretty.hs46
-rw-r--r--src/full/Agda/Utils/ReadP.hs23
-rw-r--r--src/full/Agda/Utils/Singleton.hs73
-rw-r--r--src/full/Agda/Utils/Size.hs9
-rw-r--r--src/full/Agda/Utils/String.hs24
-rw-r--r--src/full/Agda/Utils/Suffix.hs2
-rw-r--r--src/full/Agda/Utils/Time.hs7
-rw-r--r--src/full/Agda/Utils/Trie.hs10
-rw-r--r--src/full/Agda/Utils/Tuple.hs8
-rw-r--r--src/full/Agda/Utils/Warshall.hs3
204 files changed, 10050 insertions, 7353 deletions
diff --git a/Agda.cabal b/Agda.cabal
index 56c6023..6d207af 100644
--- a/Agda.cabal
+++ b/Agda.cabal
@@ -1,10 +1,10 @@
name: Agda
-version: 2.4.2.2
+version: 2.4.2.3
cabal-version: >= 1.8
build-type: Custom
license: OtherLicense
license-file: LICENSE
-author: Ulf Norell, Andreas Abel, Nils Anders Danielsson, Makoto Takeyama, Catarina Coquand, with contributions by Stevan Andjelkovic, Marcin Benke, Jean-Philippe Bernardy, James Chapman, Jesper Cockx, Dominique Devriese, Peter Divanski, Fredrik Nordvall Forsberg, Olle Fredriksson, Daniel Gustafsson, Patrik Jansson, Alan Jeffrey, Wolfram Kahl, Fredrik Lindblad, Francesco Mazzoli, Stefan Monnier, Darin Morrison, Guilhem Moulin, Nicolas Pouillard, Andrés Sicard-Ramírez, Andrea Vezzosi and many more.
+author: Ulf Norell, Andreas Abel, Nils Anders Danielsson, Makoto Takeyama, Catarina Coquand, with contributions by Stevan Andjelkovic, Marcin Benke, Jean-Philippe Bernardy, James Chapman, Jesper Cockx, Dominique Devriese, Peter Divanski, Fredrik Nordvall Forsberg, Olle Fredriksson, Daniel Gustafsson, Philipp Hausmann, Patrik Jansson, Alan Jeffrey, Wolfram Kahl, Fredrik Lindblad, Francesco Mazzoli, Stefan Monnier, Darin Morrison, Guilhem Moulin, Nicolas Pouillard, Andrés Sicard-Ramírez, Andrea Vezzosi and many more.
maintainer: Ulf Norell <ulfn@chalmers.se>
homepage: http://wiki.portal.chalmers.se/agda/
bug-reports: http://code.google.com/p/agda/issues/list
@@ -32,19 +32,19 @@ description:
Note that the Agda library does not follow the package versioning
policy, because it is not intended to be used by third-party
packages.
-tested-with: GHC == 7.0.4
- GHC == 7.4.2
+tested-with: GHC == 7.4.2
GHC == 7.6.3
- GHC == 7.8.3
+ GHC == 7.8.4
+ GHC == 7.10.1
extra-source-files: src/full/undefined.h
README.md
CHANGELOG
data-dir: src/data
data-files: Agda.css
emacs-mode/*.el
- EpicInclude/AgdaPrelude.e
- EpicInclude/stdagda.c
- EpicInclude/stdagda.h
+ -- EpicInclude/AgdaPrelude.e
+ -- EpicInclude/stdagda.c
+ -- EpicInclude/stdagda.h
agda.sty
postprocess-latex.pl
lib/prim/Agda/Primitive.agda
@@ -56,90 +56,101 @@ source-repository head
source-repository this
type: git
location: https://github.com/agda/agda
- tag: 2.4.2.2
+ tag: 2.4.2.3
flag cpphs
default: True
manual: True
description: Use cpphs instead of cpp.
-flag epic
- default: False
- manual: True
- description:
- Install the Epic compiler.
-
library
hs-source-dirs: src/full
include-dirs: src/full
- if flag(epic)
- build-depends: epic >= 0.1.13 && < 0.10
+
+ if flag(cpphs)
+ build-tools: cpphs >= 1.19 && < 1.20
+ ghc-options: -pgmP cpphs -optP --cpp
if os(windows)
build-depends: Win32 >= 2.2 && < 2.4
build-depends:
- array >= 0.1 && < 0.6
- , base >= 4.2 && < 4.8
+ array >= 0.4.0.0 && < 0.6
+ , base >= 4.5.0.0 && < 4.9
, binary >= 0.6 && < 0.8
, boxes >= 0.1.3 && < 0.2
-- NFData ByteString is only available from bytestring >= 0.10
- -- but bytestring-0.10 is not accepted by travis build for ghc <= 7.4
+ -- but bytestring-0.10 is not accepted by travis build for GHC <= 7.4
-- as it breaks the accompanying haskell-platform
- -- even though it builds with older ghcs.
- , bytestring >= 0.9.0.1 && < 0.11
- , containers >= 0.1 && < 0.6
+ -- even though it builds with older GHCs.
+ , bytestring >= 0.9.2.1 && < 0.11
+ , containers >= 0.4.2.1 && < 0.6
, data-hash == 0.2.0.0
- , deepseq == 1.3.*
- , equivalence >= 0.2.5 && < 0.3
- , filepath >= 1.1 && < 1.4
- , geniplate >= 0.6.0.3 && < 0.7
+ , deepseq >= 1.3.0.0 && < 1.5
+ , edit-distance >= 0.2.1.2 && < 0.3
+ , equivalence >= 0.2.5 && < 0.4
+ , filepath >= 1.3.0.0 && < 1.5
+ , geniplate-mirror >= 0.6.0.6 && < 0.7
-- hashable 1.2.0.10 makes library-test 10x slower. The issue was
-- fixed in hashable 1.2.1.0.
-- https://github.com/tibbe/hashable/issues/57.
, hashable >= 1.1.2.3 && < 1.2 || >= 1.2.1.0 && < 1.3
- , hashtables >= 1.0 && < 1.2
+ -- There is a "serious bug"
+ -- (https://hackage.haskell.org/package/hashtables-1.2.0.2/changelog)
+ -- in hashtables 1.2.0.0/1.2.0.1. This bug seems to have made Agda
+ -- much slower (infinitely slower?) in some cases.
+ , hashtables >= 1.0 && < 1.2 || >= 1.2.0.2 && < 1.3
, haskeline >= 0.7 && < 0.8
- , haskell-src-exts >= 1.9.6 && < 1.17
+ , haskell-src-exts >= 1.16.0.1 && < 1.17
-- mtl-2.1 contains a severe bug.
--
-- mtl >= 2.2 && < 2.2.1 doesn't export Control.Monad.Except.
, mtl >= 2.1.1 && <= 2.1.3.1 || >= 2.2.1 && < 2.3
- , parallel < 3.3
+ , QuickCheck >= 2.8 && < 2.9
+ , parallel >= 3.2.0.4 && < 3.3
-- , parsec >= 3.1 && < 3.2, -- only for Agda.TypeChecking.SizedTypes.Parser, which is not included
- , pretty >= 1.0 && < 1.2
- , process >= 1.0.1.0 && < 1.3
- , QuickCheck >= 2.7.5 && < 2.8
- , STMonadTrans >= 0.3.2 && < 0.4
+
+ -- pretty 1.1.1.2 and 1.1.1.3 do not follow the package versioning
+ -- policy.
+ , pretty >= 1.1.1.0 && < 1.1.1.2 || >= 1.1.2 && < 1.2
+ , process >= 1.1.0.1 && < 1.3
, strict >= 0.3.2 && < 0.4
- , template-haskell >= 2.5 && < 2.10
+ , template-haskell >= 2.7.0.0 && < 2.11
, text >= 0.11 && < 1.3
- -- tranformers 0.4.0.0 was deprecated.
+ -- transformers 0.4.0.0 was deprecated.
, transformers >= 0.3 && < 0.4 || >= 0.4.1.0 && < 0.5
+ , transformers-compat >= 0.3.3.2 && < 0.5
, unordered-containers == 0.2.*
, xhtml == 3000.2.*
- , zlib >= 0.4.0.1 && < 0.6
+ , zlib >= 0.4.0.1 && < 0.7
+
+ if impl(ghc < 7.8)
+ build-depends: base-orphans >= 0.3.1 && < 0.4
if impl(ghc < 7.6)
build-depends:
- directory >= 1.0 && < 1.2
- , old-time >= 1.0 && < 1.2
+ directory >= 1.1.0.2 && < 1.2
+ -- The package ghc-prim is included in order to get access to
+ -- GHC.Generics, which later moved to base.
+ , ghc-prim == 0.2.*
+ , old-time >= 1.1.0.0 && < 1.2
else
build-depends:
- directory == 1.2.*
- , time == 1.4.*
+ directory >= 1.2.0.0 && < 1.3
+ , time >= 1.4 && < 1.6
build-tools:
alex >= 3.1.0 && < 3.2
- , happy >= 1.19.3 && < 2
+ , happy >= 1.19.4 && < 2
- exposed-modules: Agda.Main
- Agda.ImpossibleTest
- Agda.Interaction.BasicOps
- Agda.Interaction.EmacsTop
- Agda.Interaction.InteractionTop
+ exposed-modules: Agda.Auto.Auto
+ Agda.Auto.CaseSplit
+ Agda.Auto.Convert
+ Agda.Auto.NarrowingSearch
+ Agda.Auto.SearchControl
+ Agda.Auto.Syntax
+ Agda.Auto.Typecheck
Agda.Compiler.CallCompiler
- Agda.Compiler.HaskellTypes
Agda.Compiler.Epic.AuxAST
Agda.Compiler.Epic.CaseOpts
Agda.Compiler.Epic.Compiler
@@ -155,6 +166,7 @@ library
Agda.Compiler.Epic.Primitive
Agda.Compiler.Epic.Smashing
Agda.Compiler.Epic.Static
+ Agda.Compiler.HaskellTypes
Agda.Compiler.JS.Case
Agda.Compiler.JS.Compiler
Agda.Compiler.JS.Syntax
@@ -166,8 +178,11 @@ library
Agda.Compiler.MAlonzo.Misc
Agda.Compiler.MAlonzo.Pretty
Agda.Compiler.MAlonzo.Primitives
- Agda.Interaction.CommandLine.CommandLine
+ Agda.ImpossibleTest
+ Agda.Interaction.BasicOps
+ Agda.Interaction.CommandLine
Agda.Interaction.EmacsCommand
+ Agda.Interaction.EmacsTop
Agda.Interaction.Exceptions
Agda.Interaction.FindFile
Agda.Interaction.Highlighting.Dot
@@ -179,11 +194,13 @@ library
Agda.Interaction.Highlighting.Vim
Agda.Interaction.Highlighting.LaTeX
Agda.Interaction.Imports
+ Agda.Interaction.InteractionTop
Agda.Interaction.Response
Agda.Interaction.MakeCase
Agda.Interaction.Monad
Agda.Interaction.Options
Agda.Interaction.Options.Lenses
+ Agda.Main
Agda.Syntax.Abstract.Copatterns
Agda.Syntax.Abstract.Name
Agda.Syntax.Abstract.Pretty
@@ -303,6 +320,7 @@ library
Agda.TypeChecking.Reduce
Agda.TypeChecking.Reduce.Monad
Agda.TypeChecking.Rewriting
+ Agda.TypeChecking.Rewriting.NonLinMatch
Agda.TypeChecking.Rules.Builtin
Agda.TypeChecking.Rules.Builtin.Coinduction
Agda.TypeChecking.Rules.Data
@@ -356,7 +374,10 @@ library
Agda.Utils.Lens
Agda.Utils.Lens.Examples
Agda.Utils.List
+ Agda.Utils.ListT
+ Agda.Utils.ListT.Tests
Agda.Utils.Map
+ Agda.Utils.Map.Compat
Agda.Utils.Maybe
Agda.Utils.Maybe.Strict
Agda.Utils.Monad
@@ -365,11 +386,11 @@ library
Agda.Utils.Permutation
Agda.Utils.Permutation.Tests
Agda.Utils.Pointer
- Agda.Utils.Pointed
Agda.Utils.Pretty
Agda.Utils.QuickCheck
Agda.Utils.ReadP
Agda.Utils.SemiRing
+ Agda.Utils.Singleton
Agda.Utils.Size
Agda.Utils.String
Agda.Utils.Suffix
@@ -381,68 +402,53 @@ library
Agda.Utils.VarSet
Agda.Utils.Warshall
Agda.Version
- Agda.Auto.Auto
- Agda.Auto.Convert
- Agda.Auto.Typecheck
- Agda.Auto.NarrowingSearch
- Agda.Auto.Syntax
- Agda.Auto.SearchControl
- Agda.Auto.CaseSplit
+
other-modules: Paths_Agda
- -- This conditional is required by GHC <= 7.4.2.
- if true
- ghc-options: -w
- -fwarn-deprecated-flags
- -fwarn-dodgy-foreign-imports
- -fwarn-dodgy-imports
- -fwarn-duplicate-exports
- -fwarn-hi-shadowing
- -fwarn-incomplete-patterns
- -fwarn-missing-fields
- -fwarn-missing-methods
- -fwarn-missing-signatures
- -fwarn-monomorphism-restriction
- -fwarn-tabs
- -fwarn-overlapping-patterns
- -fwarn-unrecognised-pragmas
- -fwarn-warnings-deprecations
- if flag(cpphs)
- build-tools: cpphs >= 1.18.6 && < 1.19
- ghc-options: -pgmPcpphs -optP--cpp
+ if impl(ghc >= 7.4.2)
+ ghc-options: -w
+ -fwarn-deprecated-flags
+ -fwarn-dodgy-exports
+ -fwarn-dodgy-foreign-imports
+ -fwarn-dodgy-imports
+ -fwarn-duplicate-exports
+ -fwarn-hi-shadowing
+ -fwarn-identities
+ -fwarn-incomplete-patterns
+ -fwarn-missing-fields
+ -fwarn-missing-methods
+ -fwarn-missing-signatures
+ -fwarn-monomorphism-restriction
+ -fwarn-tabs
+ -fwarn-overlapping-patterns
+ -fwarn-unrecognised-pragmas
+ -fwarn-unused-do-bind
+ -fwarn-warnings-deprecations
+ -fwarn-wrong-do-bind
- -- The Cabal-generated module Paths_Agda triggers a warning under
- -- GHC 7.2.1/7.2.2 (at least when certain versions of Cabal are
- -- used).
- --
- -- Issue 1103: Some files (e.g. Syntax.Scope.Monad,
- -- Termination.SparseMatrix and Utils.Cluster) trigger a warning
- -- under GHC 7.0.4. -Werror is for developers only, who are assumed
- -- to use a recent GHC.
- -- if impl(ghc > 7.2.2)
- -- ghc-options: -Werror
- if impl(ghc >= 6.12)
- ghc-options: -fwarn-dodgy-exports
- -fwarn-wrong-do-bind
- if impl(ghc >= 7.2)
- ghc-options: -fwarn-identities
if impl(ghc >= 7.6.3)
- ghc-options: -fwarn-pointless-pragmas
+ ghc-options: -fwarn-pointless-pragmas
+
if impl(ghc >= 7.8)
- ghc-options: -fwarn-amp
- -fwarn-duplicate-constraints
- -fwarn-empty-enumerations
- -fwarn-overflowed-literals
- -fwarn-typed-holes
- -fwarn-inline-rule-shadowing
+ ghc-options: -fwarn-duplicate-constraints
+ -fwarn-empty-enumerations
+ -fwarn-overflowed-literals
+ -fwarn-typed-holes
+ -fwarn-inline-rule-shadowing
- ghc-prof-options: -auto-all
+ if impl(ghc >= 7.10)
+ ghc-options: -fwarn-context-quantification
+ -fwarn-unticked-promoted-constructors
+
+ -- The -fwarn-amp flag is deprected in GHC 7.10.1.
+ if impl(ghc >= 7.8) && impl(ghc < 7.10)
+ ghc-options: -fwarn-amp
executable agda
hs-source-dirs: src/main
main-is: Main.hs
build-depends:
- Agda == 2.4.2.2
+ Agda == 2.4.2.3
-- Nothing is used from the following package, except for the
-- prelude.
, base >= 3 && < 6
@@ -459,8 +465,7 @@ executable agda-mode
main-is: Main.hs
other-modules: Paths_Agda
build-depends:
- base >= 4.2 && < 4.8
- , directory >= 1.0 && < 1.3
- , filepath >= 1.1 && < 1.4
+ base >= 4.5.0.0 && < 4.9
+ , directory >= 1.1.0.2 && < 1.3
+ , filepath >= 1.3.0.0 && < 1.5
, process >= 1.0.1.0 && < 1.3
-
diff --git a/CHANGELOG b/CHANGELOG
index 6378f89..038f01c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,264 @@
------------------------------------------------------------------------
+-- Release notes for Agda version 2.4.2.3
+------------------------------------------------------------------------
+
+Important changes since 2.4.2.2:
+
+Installation and infrastructure
+===============================
+
+* Added support for GHC 7.10.1.
+
+* Removed support for GHC 7.0.4.
+
+Language
+========
+
+* _ is no longer a valid name for a definition. The following fails now:
+ [Issue 1465]
+
+ postulate _ : Set
+
+* Typed bindings can now contain hiding information [Issue 1391].
+ This means you can now write
+
+ assoc : (xs {ys zs} : List A) → ((xs ++ ys) ++ zs) ≡ (xs ++ (ys ++ zs))
+
+ instead of the longer
+
+ assoc : (xs : List A) {ys zs : List A} → ...
+
+ It also works with irrelevance
+
+ .(xs {ys zs} : List A) → ...
+
+ but of course does not make sense if there is hiding information already.
+ Thus, this is (still) a parse error:
+
+ {xs {ys zs} : List A} → ...
+
+* The builtins for sized types no longer need accompanying postulates.
+ The BUILTIN pragmas for size stuff now also declare the identifiers
+ they bind to.
+
+ {-# BUILTIN SIZEUNIV SizeUniv #-} -- SizeUniv : SizeUniv
+ {-# BUILTIN SIZE Size #-} -- Size : SizeUniv
+ {-# BUILTIN SIZELT Size<_ #-} -- Size<_ : ..Size → SizeUniv
+ {-# BUILTIN SIZESUC ↑_ #-} -- ↑_ : Size → Size
+ {-# BUILTIN SIZEINF ∞ #-} -- ∞ : Size
+
+ Size and Size< now live in the new universe SizeUniv.
+ It is forbidden to build function spaces in this universe,
+ in order to prevent the malicious assumption of a size predecessor
+
+ pred : (i : Size) → Size< i
+
+ [Issue 1428].
+
+* Unambiguous notations (coming from syntax declarations) that resolve
+ to ambiguous names are now parsed unambiguously [Issue 1194].
+
+* If only some instances of an overloaded name have a given
+ associated notation (coming from syntax declarations), then this
+ name can only be resolved to the given instances of the
+ name, not to other instances [Issue 1194].
+
+ Previously, if different instances of an overloaded name had
+ /different/ associated notations, then none of the notations could
+ be used. Now all of them can be used.
+
+ Note that notation identity does not only involve the right-hand
+ side of the syntax declaration. For instance, the following
+ notations are not seen as identical, because the implicit argument
+ names are different:
+
+ module A where
+
+ data D : Set where
+ c : {x y : D} → D
+
+ syntax c {x = a} {y = b} = a ∙ b
+
+ module B where
+
+ data D : Set where
+ c : {y x : D} → D
+
+ syntax c {y = a} {x = b} = a ∙ b
+
+* If an overloaded operator is in scope with at least two distinct
+ fixities, then it gets the default fixity [Issue 1436].
+
+ Similarly, if two or more identical notations for a given overloaded
+ name are in scope, and these notations do not all have the
+ same fixity, then they get the default fixity.
+
+Type checking
+=============
+
+* Functions of varying arity can now have with-clauses and use rewrite.
+ Example:
+
+ NPred : Nat → Set
+ NPred 0 = Bool
+ NPred (suc n) = Nat → NPred n
+
+ const : Bool → ∀{n} → NPred n
+ const b {0} = b
+ const b {suc n} m = const b {n}
+
+ allOdd : ∀ n → NPred n
+ allOdd 0 = true
+ allOdd (suc n) m with even m
+ ... | true = const false
+ ... | false = allOdd n
+
+* Function defined by copattern matching can now have with-clauses
+ and use rewrite. Example:
+
+ {-# OPTIONS --copatterns #-}
+
+ record Stream (A : Set) : Set where
+ coinductive
+ constructor delay
+ field
+ force : A × Stream A
+ open Stream
+
+ map : ∀{A B} → (A → B) → Stream A → Stream B
+ force (map f s) with force s
+ ... | a , as = f a , map f as
+
+ record Bisim {A B} (R : A → B → Set) (s : Stream A) (t : Stream B) : Set where
+ coinductive
+ constructor ~delay
+ field
+ ~force : let a , as = force s
+ b , bs = force t
+ in R a b × Bisim R as bs
+ open Bisim
+
+ SEq : ∀{A} (s t : Stream A) → Set
+ SEq = Bisim (_≡_)
+
+ -- Slightly weird definition of symmetry to demonstrate rewrite.
+
+ ~sym' : ∀{A} {s t : Stream A} → SEq s t → SEq t s
+ ~force (~sym' {s = s} {t} p) with force s | force t | ~force p
+ ... | a , as | b , bs | r , q rewrite r = refl , ~sym' q
+
+* Instances can now be defined by copattern matching. [Issue 1413]
+ The following example extends the one in
+ [Abel, Pientka, Thibodeau, Setzer, POPL 2013, Section 2.2]:
+
+ {-# OPTIONS --copatterns #-}
+
+ -- The Monad type class
+
+ record Monad (M : Set → Set) : Set1 where
+ field
+ return : {A : Set} → A → M A
+ _>>=_ : {A B : Set} → M A → (A → M B) → M B
+ open Monad {{...}}
+
+ -- The State newtype
+
+ record State (S A : Set) : Set where
+ field
+ runState : S → A × S
+ open State
+
+ -- State is an instance of Monad
+
+ instance
+ stateMonad : {S : Set} → Monad (State S)
+ runState (return {{stateMonad}} a ) s = a , s -- NEW
+ runState (_>>=_ {{stateMonad}} m k) s₀ = -- NEW
+ let a , s₁ = runState m s₀
+ in runState (k a) s₁
+
+ -- stateMonad fulfills the monad laws
+
+ leftId : {A B S : Set}(a : A)(k : A → State S B) →
+ (return a >>= k) ≡ k a
+ leftId a k = refl
+
+ rightId : {A B S : Set}(m : State S A) →
+ (m >>= return) ≡ m
+ rightId m = refl
+
+ assoc : {A B C S : Set}(m : State S A)(k : A → State S B)(l : B → State S C) →
+ ((m >>= k) >>= l) ≡ (m >>= λ a → k a >>= l)
+ assoc m k l = refl
+
+
+Emacs mode
+==========
+
+* The new menu option "Switch to another version of Agda" tries to do
+ what it says.
+
+* Changed feature: Interactively split result.
+
+ [ This is as before: ]
+ Make-case (C-c C-c) with no variables given tries to split on the
+ result to introduce projection patterns. The hole needs to be of
+ record type, of course.
+
+ test : {A B : Set} (a : A) (b : B) → A × B
+ test a b = ?
+
+ Result-splitting ? will produce the new clauses:
+
+ proj₁ (test a b) = ?
+ proj₂ (test a b) = ?
+
+ [ This has changed: ]
+ If hole is of function type, make-case will introduce only pattern
+ variables (as much as it can).
+
+ testFun : {A B : Set} (a : A) (b : B) → A × B
+ testFun = ?
+
+ Result-splitting ? will produce the new clause:
+
+ testFun a b = ?
+
+ A second invocation of make-case will then introduce projection patterns.
+
+Error messages
+==============
+
+* Agda now suggests corrections of misspelled options, e.g.
+
+ {-# OPTIONS
+ --dont-termination-check
+ --without-k
+ --senf-gurke
+ #-}
+
+ Unrecognized options:
+ --dont-termination-check (did you mean --no-termination-check ?)
+ --without-k (did you mean --without-K ?)
+ --senf-gurke
+
+ Nothing close to --senf-gurke, I am afraid.
+
+Compiler backends
+=================
+
+* The Epic backend has been disabled [Issue 1481].
+
+Bug fixes
+=========
+
+* Fixed bug with unquoteDecl not working in instance blocks [Issue 1491].
+
+* Other issues fixed ( see https://code.google.com/p/agda/issues )
+ 1497
+ 1500
+
+------------------------------------------------------------------------
-- Release notes for Agda version 2.4.2.2
------------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index bf91bd6..55338de 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2005-2014 Ulf Norell, Andreas Abel, Nils Anders
+Copyright (c) 2005-2015 Ulf Norell, Andreas Abel, Nils Anders
Danielsson, Andrés Sicard-Ramírez, Dominique Devriese, Péter
Divianszki, Francesco Mazzoli, Stevan Andjelkovic, Daniel Gustafsson,
Alan Jeffrey, Makoto Takeyama, Andrea Vezzosi, Nicolas Pouillard,
diff --git a/README.md b/README.md
index 7fd9d97..a01b5ee 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+[![Build Status](https://travis-ci.org/agda/agda.svg?branch=maint-2.4.2)](https://travis-ci.org/agda/agda)
+
Agda 2
======
@@ -6,7 +8,6 @@ Table of contents:
* [Prerequisites](#prerequisites)
* [Installing Agda](#installing-agda)
* [Configuring the Emacs mode](#configuring-the-emacs-mode)
-* [Installing the Epic backend's dependencies](#installing-the-epic-backends-dependencies)
* [Installing Emacs under Windows](#installing-emacs-under-windows)
Note that this README only discusses installation of Agda, not its standard
@@ -162,44 +163,6 @@ displayed. This only works if the right fonts are available, though.
If you want to turn off this feature, then you should customise the
agda2-fontset-name variable.
-
-------------------------------------------------------------------------
-Installing the Epic backend's dependencies
-------------------------------------------------------------------------
-
-The Epic backend is experimental and requires that the Epic program is
-installed. You can install this program by giving the epic flag to
-cabal (but note that, at the time of writing, the Epic program does
-not build with certain recent versions of GHC):
-
-### Installing from Hackage:
-
- cabal update
- cabal install Agda -fepic
- agda-mode setup
-
-### Installing from development sources using cabal
-
- cabal update
- cabal install -fepic
- agda-mode setup
-
-### Installing from development sources using make
-
- make CABAL_OPTIONS=-fepic install
-
-You can also install Epic directly:
-
- cabal install epic
-
-Note that Epic depends on other software:
-
-* The Boehm garbage collector: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
-* The GNU Multiple Precision Arithmetic Library: http://gmplib.org/
-* GCC, the GNU Compiler Collection: http://gcc.gnu.org/
-
-For more information about Epic: http://www.cs.st-andrews.ac.uk/~eb/epic.php
-
------------------------------------------------------------------------
Installing Emacs under Windows
------------------------------------------------------------------------
diff --git a/dist/build/Agda/Syntax/Parser/Parser.hs b/dist/build/Agda/Syntax/Parser/Parser.hs
index cb83147..6a1377e 100644
--- a/dist/build/Agda/Syntax/Parser/Parser.hs
+++ b/dist/build/Agda/Syntax/Parser/Parser.hs
@@ -1,5 +1,7 @@
{-# OPTIONS_GHC -w #-}
{-# OPTIONS -fglasgow-exts -cpp #-}
+{-# LANGUAGE TupleSections #-}
+
{-| The parser is generated by Happy (<http://www.haskell.org/happy>).
-
- Ideally, ranges should be as precise as possible, to get messages that
@@ -44,872 +46,886 @@ import Agda.Utils.Hash
import Agda.Utils.List (spanJust)
import Agda.Utils.Monad
import Agda.Utils.QuickCheck
+import Agda.Utils.Singleton
import Agda.Utils.TestHelpers
import Agda.Utils.Tuple
import qualified Data.Array as Happy_Data_Array
import qualified GHC.Exts as Happy_GHC_Exts
import Control.Applicative(Applicative(..))
+import Control.Monad (ap)
--- parser produced by Happy Version 1.19.4
+-- parser produced by Happy Version 1.19.5
-newtype HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72 = HappyAbsSyn HappyAny
+newtype HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74 = HappyAbsSyn HappyAny
#if __GLASGOW_HASKELL__ >= 607
type HappyAny = Happy_GHC_Exts.Any
#else
type HappyAny = forall a . a
#endif
-happyIn6 :: ([Token]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn6 :: ([Token]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn6 #-}
-happyOut6 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Token])
+happyOut6 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Token])
happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut6 #-}
-happyIn7 :: ([Token]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn7 :: ([Token]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn7 #-}
-happyOut7 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Token])
+happyOut7 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Token])
happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut7 #-}
-happyIn8 :: (Token) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn8 :: (Token) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn8 #-}
-happyOut8 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Token)
+happyOut8 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Token)
happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut8 #-}
-happyIn9 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn9 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (([Pragma], [Declaration]))
+happyOut9 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (([Pragma], [Declaration]))
happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut9 #-}
-happyIn10 :: t10 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn10 :: t10 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t10
+happyOut10 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t10
happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut10 #-}
-happyIn11 :: t11 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn11 :: t11 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t11
+happyOut11 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t11
happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut11 #-}
-happyIn12 :: t12 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn12 :: t12 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn12 #-}
-happyOut12 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t12
+happyOut12 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t12
happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut12 #-}
-happyIn13 :: (()) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn13 :: (()) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (())
+happyOut13 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (())
happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut13 #-}
-happyIn14 :: (Integer) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn14 :: (Integer) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Integer)
+happyOut14 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Integer)
happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut14 #-}
-happyIn15 :: (Name) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn15 :: (Name) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Name)
+happyOut15 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Name)
happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut15 #-}
-happyIn16 :: ([Name]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn16 :: ([Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Name])
+happyOut16 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Name])
happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut16 #-}
-happyIn17 :: (Range) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn17 :: (Range) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Range)
+happyOut17 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Range)
happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut17 #-}
-happyIn18 :: (Arg Name) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn18 :: (Arg Name) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Arg Name)
+happyOut18 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Arg Name)
happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut18 #-}
-happyIn19 :: ([Arg Name]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn19 :: ([Arg Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Arg Name])
+happyOut19 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Arg Name])
happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut19 #-}
-happyIn20 :: ([Arg Name]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn20 :: ([Arg Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Arg Name])
+happyOut20 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Arg Name])
happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut20 #-}
-happyIn21 :: (QName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn21 :: (QName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (QName)
+happyOut21 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (QName)
happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut21 #-}
-happyIn22 :: (QName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn22 :: (QName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (QName)
+happyOut22 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (QName)
happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut22 #-}
-happyIn23 :: (Name) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn23 :: (Name) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Name)
+happyOut23 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Name)
happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut23 #-}
-happyIn24 :: ([Name]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn24 :: ([Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Name])
+happyOut24 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Name])
happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut24 #-}
-happyIn25 :: ([Name]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn25 :: ([Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Name])
+happyOut25 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Name])
happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut25 #-}
-happyIn26 :: (Either [Name] [Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn26 :: (Either [Name] [Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Either [Name] [Expr])
+happyOut26 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Either [Name] [Expr])
happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut26 #-}
-happyIn27 :: ([String]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn27 :: ([WithHiding Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([String])
+happyOut27 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([WithHiding Name])
happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut27 #-}
-happyIn28 :: (String) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn28 :: ([String]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (String)
+happyOut28 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([String])
happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut28 #-}
-happyIn29 :: (Name) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn29 :: (String) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Name)
+happyOut29 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (String)
happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut29 #-}
-happyIn30 :: (QName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn30 :: (Name) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (QName)
+happyOut30 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Name)
happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut30 #-}
-happyIn31 :: (Expr) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn31 :: (QName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Expr)
+happyOut31 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (QName)
happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut31 #-}
-happyIn32 :: t32 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn32 :: (Expr) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t32
+happyOut32 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Expr)
happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut32 #-}
-happyIn33 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn33 :: t33 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Expr])
+happyOut33 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t33
happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut33 #-}
-happyIn34 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn34 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn34 #-}
-happyOut34 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Expr])
+happyOut34 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Expr])
happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut34 #-}
-happyIn35 :: t35 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn35 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn35 #-}
-happyOut35 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t35
+happyOut35 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Expr])
happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut35 #-}
-happyIn36 :: (Expr) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn36 :: t36 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn36 #-}
-happyOut36 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Expr)
+happyOut36 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t36
happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut36 #-}
-happyIn37 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn37 :: (Expr) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Expr])
+happyOut37 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Expr)
happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut37 #-}
-happyIn38 :: t38 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn38 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t38
+happyOut38 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Expr])
happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut38 #-}
-happyIn39 :: t39 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn39 :: t39 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t39
+happyOut39 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t39
happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut39 #-}
-happyIn40 :: t40 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn40 :: t40 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t40
+happyOut40 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t40
happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut40 #-}
-happyIn41 :: ([(Name, Expr)]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn41 :: t41 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([(Name, Expr)])
+happyOut41 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t41
happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut41 #-}
-happyIn42 :: ([(Name, Expr)]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn42 :: ([(Name, Expr)]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([(Name, Expr)])
+happyOut42 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([(Name, Expr)])
happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut42 #-}
-happyIn43 :: ((Name, Expr)) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn43 :: ([(Name, Expr)]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ((Name, Expr))
+happyOut43 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([(Name, Expr)])
happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut43 #-}
-happyIn44 :: t44 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn44 :: ((Name, Expr)) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t44
+happyOut44 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ((Name, Expr))
happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut44 #-}
-happyIn45 :: t45 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn45 :: t45 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t45
+happyOut45 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t45
happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut45 #-}
-happyIn46 :: ([TypedBindings]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn46 :: t46 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([TypedBindings])
+happyOut46 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t46
happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut46 #-}
-happyIn47 :: (TypedBindings) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn47 :: ([TypedBindings]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (TypedBindings)
+happyOut47 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([TypedBindings])
happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut47 #-}
-happyIn48 :: (( [Color], TypedBinding )) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn48 :: (TypedBindings) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (( [Color], TypedBinding ))
+happyOut48 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (TypedBindings)
happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut48 #-}
-happyIn49 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn49 :: (TypedBindings) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([LamBinding])
+happyOut49 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (TypedBindings)
happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut49 #-}
-happyIn50 :: (Either ([LamBinding], Hiding) [Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn50 :: (TypedBindings) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Either ([LamBinding], Hiding) [Expr])
+happyOut50 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (TypedBindings)
happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut50 #-}
-happyIn51 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn51 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Either Hiding LamBinding])
+happyOut51 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([LamBinding])
happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut51 #-}
-happyIn52 :: (Either [Either Hiding LamBinding] [Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn52 :: (Either ([LamBinding], Hiding) [Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Either [Either Hiding LamBinding] [Expr])
+happyOut52 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Either ([LamBinding], Hiding) [Expr])
happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut52 #-}
-happyIn53 :: ((LHS,RHS,WhereClause)) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn53 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ((LHS,RHS,WhereClause))
+happyOut53 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Either Hiding LamBinding])
happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut53 #-}
-happyIn54 :: ((LHS,RHS,WhereClause)) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn54 :: (Either [Either Hiding LamBinding] [Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ((LHS,RHS,WhereClause))
+happyOut54 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Either [Either Hiding LamBinding] [Expr])
happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut54 #-}
-happyIn55 :: ((LHS,RHS,WhereClause)) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn55 :: ((LHS,RHS,WhereClause)) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ((LHS,RHS,WhereClause))
+happyOut55 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ((LHS,RHS,WhereClause))
happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut55 #-}
-happyIn56 :: ([(LHS,RHS,WhereClause)]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn56 :: ((LHS,RHS,WhereClause)) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([(LHS,RHS,WhereClause)])
+happyOut56 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ((LHS,RHS,WhereClause))
happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut56 #-}
-happyIn57 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn57 :: ((LHS,RHS,WhereClause)) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([LamBinding])
+happyOut57 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ((LHS,RHS,WhereClause))
happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut57 #-}
-happyIn58 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn58 :: ([(LHS,RHS,WhereClause)]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([LamBinding])
+happyOut58 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([(LHS,RHS,WhereClause)])
happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut58 #-}
-happyIn59 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn59 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([LamBinding])
+happyOut59 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([LamBinding])
happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut59 #-}
-happyIn60 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn60 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([LamBinding])
+happyOut60 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([LamBinding])
happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut60 #-}
-happyIn61 :: (Either [LamBinding] [Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn61 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Either [LamBinding] [Expr])
+happyOut61 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([LamBinding])
happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut61 #-}
-happyIn62 :: (ImportDirective) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn62 :: ([LamBinding]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (ImportDirective)
+happyOut62 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([LamBinding])
happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut62 #-}
-happyIn63 :: ([ImportDirective]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn63 :: (Either [LamBinding] [Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([ImportDirective])
+happyOut63 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Either [LamBinding] [Expr])
happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut63 #-}
-happyIn64 :: (ImportDirective) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn64 :: (ImportDirective) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (ImportDirective)
+happyOut64 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (ImportDirective)
happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut64 #-}
-happyIn65 :: ((UsingOrHiding , Range)) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn65 :: ([ImportDirective]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ((UsingOrHiding , Range))
+happyOut65 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([ImportDirective])
happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut65 #-}
-happyIn66 :: (([Renaming] , Range)) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn66 :: (ImportDirective) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (([Renaming] , Range))
+happyOut66 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (ImportDirective)
happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut66 #-}
-happyIn67 :: ([Renaming]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn67 :: ((UsingOrHiding , Range)) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Renaming])
+happyOut67 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ((UsingOrHiding , Range))
happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut67 #-}
-happyIn68 :: (Renaming) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn68 :: (([Renaming] , Range)) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Renaming)
+happyOut68 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (([Renaming] , Range))
happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut68 #-}
-happyIn69 :: (ImportedName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn69 :: ([Renaming]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (ImportedName)
+happyOut69 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Renaming])
happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut69 #-}
-happyIn70 :: (ImportedName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn70 :: (Renaming) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (ImportedName)
+happyOut70 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Renaming)
happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut70 #-}
-happyIn71 :: ([ImportedName]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn71 :: (ImportedName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([ImportedName])
+happyOut71 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (ImportedName)
happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut71 #-}
-happyIn72 :: t72 -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn72 :: (ImportedName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> t72
+happyOut72 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (ImportedName)
happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut72 #-}
-happyIn73 :: (LHS) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn73 :: ([ImportedName]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn73 #-}
-happyOut73 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (LHS)
+happyOut73 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([ImportedName])
happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut73 #-}
-happyIn74 :: ([Pattern]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn74 :: t74 -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Pattern])
+happyOut74 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> t74
happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut74 #-}
-happyIn75 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn75 :: (LHS) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Expr])
+happyOut75 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (LHS)
happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut75 #-}
-happyIn76 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn76 :: ([Pattern]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Expr])
+happyOut76 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Pattern])
happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut76 #-}
-happyIn77 :: (WhereClause) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn77 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (WhereClause)
+happyOut77 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Expr])
happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut77 #-}
-happyIn78 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn78 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut78 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Expr])
happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut78 #-}
-happyIn79 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn79 :: (WhereClause) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut79 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (WhereClause)
happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut79 #-}
-happyIn80 :: ([Arg Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn80 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Arg Declaration])
+happyOut80 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut80 #-}
-happyIn81 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn81 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn81 #-}
-happyOut81 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut81 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut81 #-}
-happyIn82 :: (RHSOrTypeSigs) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn82 :: ([Arg Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn82 #-}
-happyOut82 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (RHSOrTypeSigs)
+happyOut82 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Arg Declaration])
happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut82 #-}
-happyIn83 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn83 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn83 #-}
-happyOut83 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut83 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut83 #-}
-happyIn84 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn84 :: (RHSOrTypeSigs) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn84 #-}
-happyOut84 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut84 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (RHSOrTypeSigs)
happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut84 #-}
-happyIn85 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn85 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn85 #-}
-happyOut85 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut85 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut85 #-}
-happyIn86 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn86 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn86 #-}
-happyOut86 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut86 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut86 #-}
-happyIn87 :: (Name) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn87 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn87 #-}
-happyOut87 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Name)
+happyOut87 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut87 #-}
-happyIn88 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn88 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn88 #-}
-happyOut88 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut88 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut88 #-}
-happyIn89 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn89 :: (Name) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn89 #-}
-happyOut89 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut89 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Name)
happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut89 #-}
-happyIn90 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn90 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn90 #-}
-happyOut90 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut90 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut90 #-}
-happyIn91 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn91 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn91 #-}
-happyOut91 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut91 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut91 #-}
-happyIn92 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn92 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn92 #-}
-happyOut92 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut92 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut92 #-}
-happyIn93 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn93 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn93 #-}
-happyOut93 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut93 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut93 #-}
-happyIn94 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn94 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn94 #-}
-happyOut94 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut94 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut94 #-}
-happyIn95 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn95 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn95 #-}
-happyOut95 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut95 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut95 #-}
-happyIn96 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn96 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn96 #-}
-happyOut96 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut96 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut96 #-}
-happyIn97 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn97 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn97 #-}
-happyOut97 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut97 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut97 #-}
-happyIn98 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn98 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn98 #-}
-happyOut98 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut98 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut98 #-}
-happyIn99 :: ([Arg Name]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn99 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn99 #-}
-happyOut99 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Arg Name])
+happyOut99 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut99 #-}
-happyIn100 :: ([RString]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn100 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn100 #-}
-happyOut100 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([RString])
+happyOut100 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut100 #-}
-happyIn101 :: ([NamedArg HoleName]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn101 :: ([Arg Name]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn101 #-}
-happyOut101 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([NamedArg HoleName])
+happyOut101 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Arg Name])
happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut101 #-}
-happyIn102 :: (NamedArg HoleName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn102 :: ([RString]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn102 #-}
-happyOut102 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (NamedArg HoleName)
+happyOut102 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([RString])
happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut102 #-}
-happyIn103 :: (HoleName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn103 :: ([NamedArg HoleName]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn103 #-}
-happyOut103 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (HoleName)
+happyOut103 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([NamedArg HoleName])
happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut103 #-}
-happyIn104 :: (HoleName) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn104 :: (NamedArg HoleName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn104 #-}
-happyOut104 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (HoleName)
+happyOut104 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (NamedArg HoleName)
happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut104 #-}
-happyIn105 :: (RString) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn105 :: (HoleName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn105 #-}
-happyOut105 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (RString)
+happyOut105 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (HoleName)
happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut105 #-}
-happyIn106 :: (Maybe Range) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn106 :: (HoleName) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn106 #-}
-happyOut106 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Maybe Range)
+happyOut106 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (HoleName)
happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut106 #-}
-happyIn107 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn107 :: (RString) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn107 #-}
-happyOut107 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut107 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (RString)
happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut107 #-}
-happyIn108 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn108 :: (Maybe Range) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn108 #-}
-happyOut108 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Expr])
+happyOut108 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Maybe Range)
happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut108 #-}
-happyIn109 :: ([TypedBindings] -> Parser ModuleApplication) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn109 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn109 #-}
-happyOut109 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([TypedBindings] -> Parser ModuleApplication)
+happyOut109 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut109 #-}
-happyIn110 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn110 :: ([Expr]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn110 #-}
-happyOut110 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut110 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Expr])
happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut110 #-}
-happyIn111 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn111 :: ([TypedBindings] -> Parser ModuleApplication) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn111 #-}
-happyOut111 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut111 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([TypedBindings] -> Parser ModuleApplication)
happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut111 #-}
-happyIn112 :: (Name) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn112 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn112 #-}
-happyOut112 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Name)
+happyOut112 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut112 #-}
-happyIn113 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn113 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn113 #-}
-happyOut113 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut113 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut113 #-}
-happyIn114 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn114 :: (Name) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn114 #-}
-happyOut114 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Declaration)
+happyOut114 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Name)
happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut114 #-}
-happyIn115 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn115 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn115 #-}
-happyOut115 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut115 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut115 #-}
-happyIn116 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn116 :: (Declaration) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn116 #-}
-happyOut116 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut116 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Declaration)
happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut116 #-}
-happyIn117 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn117 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn117 #-}
-happyOut117 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut117 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut117 #-}
-happyIn118 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn118 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn118 #-}
-happyOut118 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut118 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut118 #-}
-happyIn119 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn119 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn119 #-}
-happyOut119 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut119 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut119 #-}
-happyIn120 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn120 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn120 #-}
-happyOut120 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut120 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut120 #-}
-happyIn121 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn121 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn121 #-}
-happyOut121 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut121 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut121 #-}
-happyIn122 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn122 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn122 #-}
-happyOut122 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut122 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut122 #-}
-happyIn123 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn123 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn123 #-}
-happyOut123 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut123 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut123 #-}
-happyIn124 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn124 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn124 #-}
-happyOut124 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut124 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut124 #-}
-happyIn125 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn125 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn125 #-}
-happyOut125 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut125 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut125 #-}
-happyIn126 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn126 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn126 #-}
-happyOut126 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut126 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut126 #-}
-happyIn127 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn127 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn127 #-}
-happyOut127 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut127 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut127 #-}
-happyIn128 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn128 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn128 #-}
-happyOut128 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut128 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut128 #-}
-happyIn129 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn129 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn129 #-}
-happyOut129 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut129 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut129 #-}
-happyIn130 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn130 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn130 #-}
-happyOut130 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut130 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut130 #-}
-happyIn131 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn131 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn131 #-}
-happyOut131 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut131 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut131 #-}
-happyIn132 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn132 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn132 #-}
-happyOut132 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Pragma)
+happyOut132 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut132 #-}
-happyIn133 :: ([TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn133 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn133 #-}
-happyOut133 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([TypeSignature])
+happyOut133 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut133 #-}
-happyIn134 :: ([TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn134 :: (Pragma) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn134 #-}
-happyOut134 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([TypeSignature])
+happyOut134 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Pragma)
happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut134 #-}
-happyIn135 :: ([Arg TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn135 :: ([TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn135 #-}
-happyOut135 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Arg TypeSignature])
+happyOut135 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([TypeSignature])
happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut135 #-}
-happyIn136 :: ([Arg TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn136 :: ([TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn136 #-}
-happyOut136 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Arg TypeSignature])
+happyOut136 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([TypeSignature])
happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut136 #-}
-happyIn137 :: ([Constructor]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn137 :: ([Arg TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn137 #-}
-happyOut137 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Constructor])
+happyOut137 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Arg TypeSignature])
happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut137 #-}
-happyIn138 :: ((Maybe (Ranged Induction), Maybe Name, [Declaration])) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn138 :: ([Arg TypeSignature]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn138 #-}
-happyOut138 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ((Maybe (Ranged Induction), Maybe Name, [Declaration]))
+happyOut138 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Arg TypeSignature])
happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut138 #-}
-happyIn139 :: (Ranged Induction) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn139 :: ([Constructor]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn139 #-}
-happyOut139 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Ranged Induction)
+happyOut139 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Constructor])
happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut139 #-}
-happyIn140 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn140 :: ((Maybe (Ranged Induction), Maybe Name, [Declaration])) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn140 #-}
-happyOut140 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut140 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ((Maybe (Ranged Induction), Maybe Name, [Declaration]))
happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut140 #-}
-happyIn141 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn141 :: (Ranged Induction) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn141 #-}
-happyOut141 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut141 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Ranged Induction)
happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut141 #-}
-happyIn142 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn142 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn142 #-}
-happyOut142 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut142 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut142 #-}
-happyIn143 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn143 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyIn143 #-}
-happyOut143 :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> ([Declaration])
+happyOut143 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOut143 #-}
-happyInTok :: (Token) -> (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72)
+happyIn144 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
+happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn144 #-}
+happyOut144 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
+happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut144 #-}
+happyIn145 :: ([Declaration]) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
+happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn145 #-}
+happyOut145 :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> ([Declaration])
+happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut145 #-}
+happyInTok :: (Token) -> (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74)
happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn t10 t11 t12 t32 t35 t38 t39 t40 t44 t45 t72) -> (Token)
+happyOutTok :: (HappyAbsSyn t10 t11 t12 t33 t36 t39 t40 t41 t45 t46 t74) -> (Token)
happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
{-# INLINE happyOutTok #-}
happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\x4b\x09\xd7\x05\x00\x00\xe7\x04\xdb\x05\x8e\x04\xde\x05\x00\x00\xcc\x05\xd4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x1a\x09\xf0\x08\xce\x05\x00\x00\xbe\x01\xc3\x05\x6b\x0b\x00\x00\x00\x00\x6f\x0f\xb9\x05\xb9\x05\x00\x00\x00\x00\x43\x0b\x00\x00\x00\x00\x0e\x02\x20\x0b\x00\x00\x00\x00\x42\x0b\x7a\x06\x3a\x06\x83\x07\x00\x00\x00\x00\x00\x00\xa9\x05\xbe\x05\x00\x00\xbb\x05\xa9\x02\xb6\x05\x00\x00\x00\x00\x9a\x02\x9a\x02\x00\x00\xb4\x05\xb2\x05\xb1\x05\xee\x05\xab\x05\xa4\x05\x4f\x03\x00\x00\x00\x00\x00\x00\x6c\x0f\xf0\x08\x00\x00\xa7\x05\x00\x00\x1f\x0b\x9b\x08\xfb\x03\xe1\x03\x00\x00\xbf\x08\x81\x08\xda\x09\x00\x00\xf8\x0a\x52\x07\x3a\x06\x17\x07\x15\x0a\x15\x0a\x15\x0a\xa3\x05\xf8\x0a\xe6\x06\x3a\x06\xab\x06\xe9\x05\xe8\x05\xf7\x0a\x57\x08\xa2\x05\xf7\x0a\x00\x00\xb0\x09\x15\x0a\x15\x0a\x99\x05\x94\x05\xe4\x05\x89\x05\x00\x00\xd8\x00\x15\x0a\x15\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x57\x08\x15\x0a\x57\x08\xf8\x0a\xe0\x05\x9b\x05\x5e\x03\xc4\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\x75\x05\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\x93\x05\x92\x05\x34\x00\xdf\xff\x88\x05\x88\x05\xd5\x0a\x90\x05\x57\x00\x57\x00\x57\x00\x82\x05\x82\x05\x82\x05\x82\x05\x86\x05\x86\x05\x86\x05\x70\x05\xa2\x0f\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x05\x66\x00\x7d\x05\x7a\x05\x7b\x05\x6e\x05\x77\x05\x76\x05\x74\x05\x65\x05\x63\x05\x63\x05\x63\x05\x63\x05\x63\x05\x63\x05\x63\x05\xb3\x05\xad\x0a\x73\x05\xd4\x0a\x3e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x6d\x00\x6d\x00\x00\x00\x9c\x02\xac\x0a\x89\x0a\x89\x0a\x00\x00\x00\x00\x89\x0a\x89\x0a\x00\x00\x8a\x0a\x62\x05\x00\x00\x62\x05\x00\x00\x00\x00\x00\x00\x89\x05\x00\x00\x00\x00\x06\x00\x57\x08\x57\x08\xb0\x05\x15\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x0a\x15\x0a\x15\x0a\x15\x0a\x0c\x00\x57\x08\x72\x05\x64\x05\x00\x00\x71\x05\x5c\x05\x61\x05\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x08\x57\x08\x15\x0a\x5a\x05\x9a\x02\x53\x05\x4e\x05\x9a\x02\x3a\x05\xdf\x00\x4d\x05\x00\x00\x63\x00\x37\x01\x48\x05\x46\x05\x42\x05\x00\x00\x15\x0a\x15\x0a\x00\x00\x15\x0a\x15\x0a\x61\x0a\x41\x05\x61\x0a\x26\x08\xe8\x07\x75\x09\x00\x00\x00\x00\x3c\x05\x11\x00\x00\x00\x47\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x07\x00\x00\x62\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\xb5\x00\xef\xff\xb5\x00\x15\x0a\x00\x00\x15\x0a\xbe\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x05\x2b\x05\x00\x00\xbe\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x07\x00\x00\x00\x00\x00\x00\x2e\x05\x62\x00\x00\x00\x27\x05\x39\x05\x00\x00\x3b\x00\x3e\x0a\x62\x0a\x61\x03\xfa\x05\x3e\x0a\x6f\x05\x3e\x0a\x9d\x00\x85\x00\x60\x00\x1d\x00\x15\x0a\x00\x00\x9c\x02\x2f\x05\x00\x00\x3b\x00\x42\x02\xed\x01\xcd\xff\xcd\xff\x61\x00\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x29\x05\xec\xff\xec\xff\x00\x00\x00\x00\x28\x05\xbe\x07\x21\x05\xe1\x04\x1b\x05\x00\x00\x17\x05\x17\x05\x17\x05\x16\x05\x15\x05\x12\x05\x14\x05\x00\x00\x00\x00\x00\x00\x00\x00\x13\x05\x00\x00\x0e\x05\xf8\x04\x08\x05\x08\x05\xf7\x04\xfd\x04\x00\x00\x00\x00\xf6\x04\xf5\x04\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x04\xf0\x04\x00\x00\x8b\x04\xef\x04\xee\x04\xed\x04\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x07\x91\x04\x98\x04\x89\x04\x8c\x04\x94\x04\x88\x04\x00\x00\x88\x04\x00\x00\xcd\xff\x82\x04\x7b\x04\x15\x02\x00\x00\x7b\x04\x7b\x04\x7b\x04\x7b\x04\x00\x00\x9c\x02\xbe\x07\x00\x00\xf5\x00\x86\x04\xbe\x07\x84\x04\xbe\x07\x84\x04\xbe\x07\x7f\x04\x47\x03\x00\x00\x7f\x04\x00\x00\x15\x02\x00\x00\x00\x00\x61\x03\x00\x00\x00\x00\x83\x04\x81\x04\x80\x04\x00\x00\x00\x00\x7d\x04\x00\x00\x6c\x04\xbe\x07\x00\x00\xbc\x04\xbb\x04\x00\x00\x00\x00\x3b\x04\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\x61\x03\x00\x00\x00\x00\x6d\x04\x6d\x04\x00\x00\x00\x00\x47\x03\xf5\xff\x2e\x00\x2e\x00\x00\x00\x61\x03\x00\x00\x3f\x0a\x61\x03\x00\x00\xb9\x04\x00\x00\x00\x00\x2d\x00\xb8\x04\x00\x00\x99\x04\x00\x00\xe2\x03\x00\x00\x00\x00\x6b\x04\x15\x02\x6a\x04\x15\x02\x9c\x02\x9c\x02\x00\x00\x63\x04\x00\x00\x71\x04\xec\xff\x00\x00\x70\x04\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x04\x00\x00\x59\x04\x39\x04\x4e\x04\x00\x00\x00\x00\x00\x00\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x00\x00\x3b\x00\x3b\x00\x0c\x00\x4d\x04\x00\x00\x00\x00\x49\x04\x48\x04\x00\x00\x48\x04\x00\x00\x00\x00\xba\x05\x00\x00\x00\x00\x56\x04\x47\x04\x00\x00\x38\x04\x3f\x04\x36\x04\x3d\x04\x43\x04\x74\x04\x00\x00\x00\x00\x61\x03\x00\x00\x00\x00\x00\x00\x2e\x04\x2e\x04\x6f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x15\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x05\x00\x00\x89\x05\x00\x00\x00\x00\x00\x00\x00\x00\x31\x04\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x3b\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x05\x00\x00\x0c\x00\x00\x00\x00\x00"#
+happyActOffsets = HappyA# "\x00\x00\x36\x09\xdb\x05\x00\x00\xd2\x04\xd4\x05\x79\x04\xe0\x05\x00\x00\xce\x05\xdf\x05\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x02\x00\x00\x00\x00\x05\x09\xdb\x08\xd2\x05\x00\x00\xb6\x02\xd1\x05\x56\x0b\x00\x00\x00\x00\xa1\x0f\xb9\x05\xb9\x05\x00\x00\x00\x00\x2e\x0b\x00\x00\x00\x00\xe6\x02\x0b\x0b\x00\x00\x00\x00\x2d\x0b\x65\x06\x25\x06\x6e\x07\x00\x00\x00\x00\x00\x00\xb4\x05\xca\x05\x00\x00\xc8\x05\x1f\x02\xc4\x05\x00\x00\x00\x00\xef\x00\xef\x00\x00\x00\xc0\x05\xc9\x05\xbf\x05\x31\x01\xbe\x05\xfe\x05\xbb\x05\xb1\x05\x0d\x04\x00\x00\x00\x00\x00\x00\x91\x0f\xdb\x08\x00\x00\xba\x05\x00\x00\x0a\x0b\x8e\x0f\x39\x04\xd3\x00\x00\x00\xaa\x08\x6c\x08\xc5\x09\x00\x00\xe3\x0a\x3d\x07\x25\x06\x02\x07\x00\x0a\x00\x0a\x00\x0a\xb6\x05\xe3\x0a\xd1\x06\x25\x06\x96\x06\xfc\x05\xf7\x05\xe2\x0a\x42\x08\xb2\x05\xe2\x0a\x00\x00\x9b\x09\x00\x0a\x00\x0a\xa8\x05\xa0\x05\xee\x05\x74\x05\x00\x00\xb7\x02\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x42\x08\x00\x0a\x42\x08\xe3\x0a\xe9\x05\xa4\x05\x12\x04\x3c\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\x00\x00\x96\x05\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\x9b\x05\x98\x05\x82\x00\xd0\x00\x8d\x05\x8d\x05\xc0\x0a\x86\x05\x88\x02\x88\x02\x88\x02\x84\x05\x84\x05\x84\x05\x84\x05\x8c\x05\x8c\x05\x8c\x05\x89\x05\xd4\x0f\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x05\xe4\xff\x81\x05\x80\x05\x7f\x05\x7e\x05\x7d\x05\x7c\x05\x7b\x05\x77\x05\x76\x05\x76\x05\x76\x05\x76\x05\x76\x05\x76\x05\x76\x05\xc6\x05\x98\x0a\x85\x05\xbf\x0a\x7f\x01\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\xff\x00\xff\x00\x00\x00\xca\x03\x97\x0a\x74\x0a\x74\x0a\x00\x00\x00\x00\x74\x0a\x74\x0a\x00\x00\x75\x0a\x71\x05\x00\x00\x71\x05\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x00\x00\xd6\x00\x42\x08\x42\x08\xbd\x05\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x10\x00\x42\x08\x7a\x05\x6d\x05\x00\x00\x79\x05\x6a\x05\x67\x05\x62\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x08\x42\x08\x00\x0a\x66\x05\xef\x00\x68\x05\x62\x05\xef\x00\x65\x05\x30\x01\x61\x05\x00\x00\xe2\x00\x3d\x01\x5f\x05\x5e\x05\x5d\x05\x00\x00\x00\x0a\x00\x0a\x00\x00\x00\x0a\x00\x0a\x4c\x0a\x5c\x05\x4c\x0a\x11\x08\xd3\x07\x60\x09\x00\x00\x00\x00\x5b\x05\x35\x00\x00\x00\xe5\x03\x00\x00\x00\x00\xa9\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x07\x00\x00\x00\x00\x4d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x62\x01\x66\x00\x62\x01\x00\x0a\x00\x00\x00\x0a\xa9\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x05\x4a\x05\x00\x00\xa9\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x07\x00\x00\x00\x00\x00\x00\x4e\x05\xde\x00\x00\x00\x48\x05\x5a\x05\x00\x00\x3d\x00\x29\x0a\x4d\x0a\x0d\x03\xe5\x05\x29\x0a\x97\x05\x29\x0a\x1d\x00\xb9\x00\x9f\x00\x9a\x00\x00\x0a\x00\x00\xca\x03\x1b\x05\x00\x00\x3d\x00\x34\x01\x5e\x01\xd5\xff\xd5\xff\xf2\xff\x00\x00\x00\x00\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\x54\x05\xed\xff\xed\xff\x00\x00\x00\x00\x16\x05\xa9\x07\x11\x05\x53\x05\x45\x05\x00\x00\x41\x05\x41\x05\x41\x05\x32\x05\x30\x05\x27\x05\x43\x05\x00\x00\x00\x00\x00\x00\x00\x00\x40\x05\x00\x00\x34\x05\x2d\x05\x22\x05\x22\x05\x1f\x05\x20\x05\x00\x00\x00\x00\x1e\x05\x1c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x19\x05\x18\x05\x00\x00\x10\x05\x17\x05\x15\x05\x12\x05\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x07\x09\x05\x13\x05\x07\x05\x08\x05\x0d\x05\x06\x05\x00\x00\x06\x05\x00\x00\xd5\xff\x05\x05\xfe\x04\x60\x00\x00\x00\xfe\x04\xfe\x04\xfe\x04\xfe\x04\x00\x00\xca\x03\xa9\x07\x00\x00\x48\x00\x02\x05\xa9\x07\x01\x05\xa9\x07\x01\x05\xa9\x07\xff\x04\xe5\x03\x00\x00\xff\x04\x00\x00\x60\x00\x00\x00\x00\x00\x0d\x03\x00\x00\x00\x00\x04\x05\x03\x05\x00\x05\x00\x00\x00\x00\xfb\x04\x00\x00\xea\x04\xa9\x07\x00\x00\x35\x05\x33\x05\x00\x00\x00\x00\x26\x04\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\x0d\x03\x00\x00\x00\x00\xe7\x04\xe7\x04\x00\x00\x00\x00\xe5\x03\x90\x00\x2d\x00\x2d\x00\x00\x00\x0d\x03\x00\x00\x2a\x0a\x0d\x03\x00\x00\xc8\x04\x00\x00\x00\x00\x0a\x00\xbc\x04\x00\x00\xb7\x04\x00\x00\xcd\x03\x00\x00\x00\x00\xe6\x04\x60\x00\xe5\x04\x60\x00\xca\x03\xca\x03\x00\x00\xde\x04\x00\x00\xe9\x04\xed\xff\x00\x00\x87\x04\xed\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x04\x00\x00\xd9\x04\x77\x04\xd8\x04\x00\x00\x00\x00\x00\x00\xca\x03\xca\x03\xca\x03\xca\x03\x00\x00\x3d\x00\x3d\x00\x10\x00\xd7\x04\x00\x00\x00\x00\x78\x04\x72\x04\x00\x00\x72\x04\x00\x00\x00\x00\xa5\x05\x00\x00\x00\x00\x7b\x04\x76\x04\x00\x00\x71\x04\x70\x04\x63\x04\x6b\x04\x74\x04\x9f\x04\x00\x00\x00\x00\x0d\x03\x00\x00\x00\x00\x00\x00\x56\x04\x56\x04\x7e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x05\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x3d\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x05\x00\x00\x10\x00\x00\x00\x00\x00"#
happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x83\x03\x81\x0f\x7a\x04\x79\x04\x76\x04\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x08\x66\x0f\x00\x00\x00\x00\x58\x03\xe0\x03\x9f\x00\x00\x00\x00\x00\xda\x01\x6e\x04\x5e\x04\x00\x00\x00\x00\x8d\x05\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x00\x00\x69\x01\xb0\x03\x42\x06\xe3\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x04\x5d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x03\x71\x02\x00\x00\x00\x00\x00\x00\x37\x04\x4b\x0f\x00\x00\x00\x00\x00\x00\x41\x03\x00\x00\xcc\x00\xa7\x00\x00\x00\x0b\x01\x23\x0c\x7c\x01\x00\x00\xe4\x02\xc7\x0b\x02\x06\xab\x0b\x34\x0d\x18\x0d\x11\x0d\x00\x00\x44\x05\x30\x0f\x82\x06\x15\x0f\x00\x00\x00\x00\x35\x04\xfa\x0e\x00\x00\xdc\x03\x00\x00\x0b\x01\xf5\x0c\xee\x0c\x00\x00\x7e\x01\x00\x00\x3a\x03\x00\x00\x00\x00\xd2\x0c\xcb\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x0e\x42\x03\xc4\x0e\x8b\x02\x1b\x04\x00\x00\x17\x04\x5c\x04\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\x5b\x04\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\xd5\x03\xd0\x03\x71\x02\x1c\x00\x45\x04\x34\x04\x9e\x00\xb8\x03\x2c\x04\x2a\x04\x29\x04\xa4\x03\xa2\x03\x9e\x03\x9d\x03\x18\x04\x16\x04\x15\x04\xcd\x03\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x03\x00\x00\xea\x03\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\xd7\x03\xd4\x03\xcf\x03\xcc\x03\xc9\x03\xc8\x03\xc6\x03\xc4\x03\x8f\x03\x92\x04\x00\x00\x01\x00\xaa\x02\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x02\x00\x00\x00\x00\xdb\x01\xbb\x01\x00\x00\x18\x00\x3f\x03\x3c\x03\xcc\x02\x00\x00\x00\x00\xc9\x02\xc6\x02\x00\x00\xf0\x00\xbf\x03\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x80\x03\xa9\x0e\x8e\x0e\x8e\x03\xc5\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x01\xaf\x0c\xa8\x0c\x8c\x0c\xc1\x03\x73\x0e\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\x00\x00\x58\x0e\x3d\x0e\x56\x02\x00\x00\xb6\x03\x00\x00\x00\x00\xb5\x03\x00\x00\x00\x00\x00\x00\x00\x00\x85\x03\x63\x03\x00\x00\x00\x00\x00\x00\x00\x00\x85\x0c\x69\x0c\x00\x00\x62\x0c\x46\x0c\x55\x02\x00\x00\x52\x02\x0b\x01\x1c\x0c\x3f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x0e\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x03\x00\x00\x65\x03\x5f\x07\x00\x00\xf3\x06\x07\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\xec\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x0d\x00\x00\x00\x00\x00\x00\xf8\x02\x16\x00\x00\x00\x3d\x03\x00\x00\x00\x00\x76\x03\x50\x02\x92\x00\xd3\x03\x82\x06\xe0\x01\x00\x00\xdd\x01\x00\x00\x00\x00\x00\x00\x00\x00\xff\x0b\x00\x00\x81\x02\x00\x00\x00\x00\x74\x03\x00\x00\x4a\x03\xf3\x01\xb6\x01\xb7\x01\x00\x00\x00\x00\x00\x00\x32\x02\x00\x00\x00\x00\x00\x00\x00\x00\x04\x03\xec\x02\x00\x00\x00\x00\x00\x00\xb6\x0d\x00\x03\xd0\x02\x00\x00\x00\x00\xfb\x02\xf9\x02\xf3\x02\x00\x00\xe1\x02\xdb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x02\xd3\x02\x00\x00\xbf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x0d\x00\x00\x00\x00\x3c\x02\x00\x00\x00\x00\xd4\x01\x00\x00\xeb\x00\x00\x00\x46\x01\x00\x00\x18\x02\x5c\x02\x00\x00\x25\x03\x21\x03\xcf\x02\xaf\x02\x00\x00\xcb\x00\x80\x0d\x00\x00\x00\x00\x64\x01\x65\x0d\x0e\x01\x4a\x0d\xf4\x00\x1c\x0a\xa0\x02\x20\x00\x00\x00\x73\x02\x00\x00\x38\x02\x00\x00\x00\x00\x75\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x00\xb7\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\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\xce\x03\x00\x00\x00\x00\x4a\x02\x2e\x02\x00\x00\x00\x00\xff\xff\x2f\x01\x0a\x01\xf1\x00\x00\x00\x82\x03\x00\x00\x39\x00\x5f\x03\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x1e\x02\x00\x00\xba\x01\x2c\x02\x16\x02\x00\x00\xac\x01\x00\x00\x00\x00\x35\x02\x00\x00\x00\x00\x21\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\xa4\x01\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\x9b\x01\x6d\x01\x17\x01\xca\x00\x00\x00\x77\x02\xea\x01\xbc\x01\x85\x01\x00\x00\x00\x00\x24\x01\xb3\xff\x00\x00\x91\xff\x00\x00\x00\x00\x82\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x23\x01\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\x30\x00\x08\x00\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x01\x00\x00\x4e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\xf7\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x40\x00\x00\x00\x00\x00"#
+happyGotoOffsets = HappyA# "\x31\x04\xa2\x0f\x89\x04\x85\x04\x82\x04\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x08\x86\x0f\x00\x00\x00\x00\xe6\x03\xfa\x03\xa5\x01\x00\x00\x00\x00\xe3\x01\x6f\x04\x6d\x04\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\x00\x00\x2a\x04\x00\x00\x00\x00\x70\x01\x0f\x01\xd2\x0b\x0c\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x04\x68\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x06\x02\x00\x00\x00\x00\x00\x00\x1f\x04\x6a\x0f\x00\x00\x00\x00\x00\x00\x4c\x03\x00\x00\x81\x00\x03\x00\x00\x00\x84\x01\x47\x0c\x94\x0b\x00\x00\x2a\x04\xd8\x06\xaf\x0b\xef\x0b\x44\x07\x1f\x0d\x02\x0d\x00\x00\xef\x02\x4e\x0f\x3a\x0d\x32\x0f\x00\x00\x00\x00\xe4\x03\x16\x0f\x00\x00\xc6\x03\x00\x00\x84\x01\xfb\x0c\xde\x0c\x00\x00\x1a\x00\x00\x00\x48\x03\x00\x00\x00\x00\xd7\x0c\xba\x0c\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x0e\x60\x02\xde\x0e\x87\x03\x27\x04\x00\x00\x20\x04\x66\x04\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\x65\x04\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\xdf\x03\xe7\x03\x06\x02\x1c\x00\x5c\x04\x50\x04\xfa\x00\xd3\x03\x42\x04\x3e\x04\x2c\x04\xa3\x03\x9c\x03\x99\x03\x8d\x03\x0a\x04\x03\x04\xf7\x03\xb7\x03\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x03\x00\x00\xe2\x03\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\x83\x03\x7a\x03\x78\x03\x70\x03\x58\x03\x49\x03\x45\x03\x3b\x03\xf0\x02\x7e\x02\x00\x00\x7b\x00\x98\x02\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x02\x00\x00\x00\x00\xe4\x01\xbf\x01\x00\x00\x18\x00\x4a\x03\x28\x03\xd5\x02\x00\x00\x00\x00\xd2\x02\xb0\x02\x00\x00\x9d\x00\x2c\x03\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x00\x00\x00\x00\xea\x02\xc2\x0e\xa6\x0e\xe8\x02\x1b\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x02\xf3\x05\xb3\x0c\x96\x0c\x1e\x03\x8a\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x0e\x52\x0e\xe8\x01\x00\x00\x11\x03\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\x00\x00\x10\x03\x02\x03\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x0c\x72\x0c\x00\x00\x6b\x0c\x4e\x0c\x5f\x02\x00\x00\x5c\x02\x84\x01\x76\x0b\x69\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x00\x00\x36\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x0e\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\xdf\x02\x70\x06\x00\x00\x30\x06\xfe\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xe2\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x0d\x00\x00\x00\x00\x00\x00\xa1\x03\x19\x00\x00\x00\xea\x03\x00\x00\x00\x00\xec\x03\x5a\x02\x95\x00\x6c\x04\x3a\x0d\x09\x02\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0c\x00\x00\xaf\x02\x00\x00\x00\x00\xd5\x03\x00\x00\xdc\x02\x83\x02\x3c\x02\xa0\x00\x00\x00\x00\x00\x00\x00\x41\x02\x00\x00\x00\x00\x00\x00\x00\x00\x74\x03\x6c\x03\x00\x00\x00\x00\x00\x00\xaa\x0d\x96\x02\x79\x02\x00\x00\x00\x00\x95\x02\x86\x02\x84\x02\x00\x00\x4f\x02\x4e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x02\x26\x02\x00\x00\x15\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x0d\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x89\x01\x00\x00\xad\xff\x00\x00\x8f\x01\x00\x00\xcc\x01\xc1\x01\x00\x00\xab\x03\xa7\x03\xa2\x03\x4f\x03\x00\x00\xb8\x00\x72\x0d\x00\x00\x00\x00\x44\x01\x56\x0d\x92\x01\x07\x0a\x8b\x01\xa2\x09\x06\x03\x20\x00\x00\x00\xf7\x02\x00\x00\xab\x01\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\xb0\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\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\x67\x04\x00\x00\x00\x00\xf1\x02\x8b\x02\x00\x00\x00\x00\xff\xff\x55\x01\x0d\x01\xd7\x00\x00\x00\x62\x04\x00\x00\x3b\x00\x15\x04\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x1c\x01\xae\x02\x8d\x02\x00\x00\x32\x01\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\xa2\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\x13\x01\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x7c\x02\x20\x02\xa2\x00\x2c\x00\x00\x00\xbf\x02\x6c\x02\x1b\x01\xfe\x00\x00\x00\x00\x00\x57\x00\xd4\x00\x00\x00\x85\x00\x00\x00\x00\x00\x3a\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\xbc\x03\x00\x00\x00\x00\x00\x00\xc2\x00\x84\x00\x51\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x01\x00\x00\x58\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x4d\x01\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x0e\x00\x00\x00\x00\x00"#
happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xfa\xff\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xa6\xfe\x7f\xff\x5a\xff\x00\x00\x6e\xff\x6d\xff\x6b\xff\x6a\xff\x67\xff\x00\x00\x48\xff\x47\xff\x65\xff\x00\x00\x00\x00\x40\xff\x3e\xff\x00\x00\x00\x00\x56\xff\x55\xff\x00\x00\x00\x00\x00\x00\x54\xff\x53\xff\x00\x00\x52\xff\x51\xff\x00\x00\x00\x00\x57\xff\x58\xff\x00\x00\xa6\xfe\x00\x00\x00\x00\x97\xff\x80\xff\x59\xff\x00\x00\x00\x00\x79\xff\x00\x00\x78\xff\x00\x00\x5b\xff\x4d\xff\x00\x00\x00\x00\x94\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xfe\x4e\xff\x7d\xff\x11\xff\x25\xff\x00\x00\x5f\xff\x00\x00\x30\xff\x2d\xff\x26\xff\x00\x00\x00\x00\x7c\xff\xa6\xfe\x00\x00\x00\x00\x4b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\xff\x5e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\xff\x00\x00\x00\x00\x17\xff\x12\xff\xa6\xfe\x00\x00\x00\x00\x00\x00\x46\xff\x00\x00\xa6\xfe\x3f\xff\x00\x00\x00\x00\x00\x00\x41\xff\x72\xff\x69\xff\x5d\xff\x00\x00\x00\x00\x00\x00\x00\x00\xed\xfe\x00\x00\xce\xfe\x5e\xfe\xe6\xfe\xe5\xfe\xe4\xfe\xe3\xfe\xe2\xfe\xe1\xfe\xe7\xfe\xe0\xfe\xdf\xfe\xde\xfe\xdd\xfe\xdc\xfe\xdb\xfe\xd4\xfe\xd6\xfe\xd5\xfe\xda\xfe\xd9\xfe\xd8\xfe\xa0\xff\xd7\xfe\x98\xfe\x87\xfe\x97\xfe\x96\xfe\x95\xfe\x94\xfe\x92\xfe\x93\xfe\x91\xfe\x90\xfe\x8f\xfe\x8c\xfe\x89\xfe\x8a\xfe\x8b\xfe\x88\xfe\x8e\xfe\x8d\xfe\x5c\xfe\x99\xfe\x00\x00\x00\x00\xa7\xfe\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\xf1\xfe\x00\x00\xfb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd4\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\xb5\xff\xb4\xff\xb3\xff\xb2\xff\xb1\xff\xb0\xff\xaf\xff\xae\xff\xad\xff\xac\xff\xab\xff\xaa\xff\xa9\xff\xa8\xff\xa7\xff\xa6\xff\xa5\xff\xa4\xff\xa3\xff\xa2\xff\x77\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\xed\xfe\x00\x00\x00\x00\xb7\xfe\x00\x00\xbd\xfe\xbe\xfe\xbf\xfe\xc0\xfe\x00\x00\x98\xff\x99\xff\x00\x00\x00\x00\xc1\xfe\x00\x00\x13\xff\x13\xff\x13\xff\x7f\xff\x7e\xff\x13\xff\x13\xff\x9a\xfe\xa2\xfe\x00\x00\xbb\xfe\x00\x00\xbc\xfe\xa1\xff\x9f\xff\xa6\xfe\x9c\xff\x9b\xff\xeb\xfe\x00\x00\x00\x00\xef\xfe\x00\x00\x4c\xff\x6f\xff\x6c\xff\x70\xff\x78\xff\x65\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xff\x44\xff\x46\xff\x79\xff\x00\x00\x19\xff\x1a\xff\x71\xff\x18\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\x00\x00\x1b\xff\x00\x00\x00\x00\x23\xff\x22\xff\x24\xff\x10\xff\x00\x00\x00\x00\x0f\xff\x00\x00\x00\x00\x2c\xff\x28\xff\x2d\xff\xa6\xfe\x00\x00\x00\x00\x31\xff\x68\xff\x27\xff\x00\x00\x34\xff\x00\x00\x37\xff\x4f\xff\x93\xff\x36\xff\x50\xff\x35\xff\x5c\xff\x00\x00\x32\xff\xa2\xfe\x33\xff\x2a\xff\x29\xff\x2b\xff\x2f\xff\x2e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x00\x00\x00\x00\x3d\xff\x3b\xff\x3c\xff\x3a\xff\x38\xff\x39\xff\x61\xff\x63\xff\x64\xff\x0d\xff\x0e\xff\x00\x00\x00\x00\x4a\xff\x00\x00\x66\xff\x62\xfe\x9d\xff\x9e\xff\xec\xfe\xf3\xfe\x00\x00\xd0\xfe\xcf\xfe\xd1\xfe\x00\x00\x00\x00\x5f\xfe\x95\xff\x00\x00\x72\xfe\x00\x00\x13\xff\xa2\xfe\x06\xff\x00\x00\x13\xff\x00\x00\x13\xff\x00\x00\x00\x00\x00\x00\x00\x00\x46\xff\x91\xff\x8d\xff\x00\x00\x6f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xff\xc4\xfe\xc3\xfe\xc2\xfe\x00\x00\xb3\xfe\xb1\xfe\xac\xfe\x00\x00\x00\x00\x00\x00\xa8\xfe\xb6\xfe\x00\x00\x00\x00\xf1\xfe\xef\xfe\x00\x00\x73\xff\x77\xff\x77\xff\x77\xff\x00\x00\x00\x00\x77\xff\x00\x00\x74\xff\x78\xfe\x79\xfe\x7a\xfe\x00\x00\x75\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xff\x76\xff\x86\xfe\x00\x00\x00\x00\x83\xfe\x76\xfe\x7b\xfe\x77\xfe\x00\x00\x00\x00\x75\xff\x77\xff\x00\x00\x00\x00\x00\x00\x7c\xfe\xf2\xfe\xf0\xfe\xba\xfe\x00\x00\x00\x00\xaa\xfe\x00\x00\x00\x00\xaa\xfe\x00\x00\xb2\xfe\x00\x00\x7b\xff\x8f\xff\x00\x00\x00\x00\x00\x00\x92\xff\x00\x00\x00\x00\x00\x00\x00\x00\x71\xfe\x00\x00\x00\x00\x8e\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\xff\x00\x00\x14\xff\x00\x00\xa4\xfe\x08\xff\x06\xff\x04\xff\x03\xff\x00\x00\x00\x00\x00\x00\x05\xff\xa1\xfe\x00\x00\x74\xfe\x00\x00\x00\x00\x96\xff\x00\x00\x00\x00\x60\xfe\xea\xfe\x00\x00\xee\xfe\x42\xff\x43\xff\x49\xff\x21\xff\x20\xff\x1f\xff\x1e\xff\x1c\xff\x1d\xff\x0b\xff\x0c\xff\x09\xff\x0a\xff\x06\xff\xa5\xfe\x61\xfe\x00\x00\x00\x00\xd3\xfe\x73\xfe\x00\x00\x9a\xff\xf7\xfe\xf7\xfe\x07\xff\x06\xff\x9b\xfe\xa2\xfe\x06\xff\x9c\xfe\xc9\xfe\x6d\xfe\xcb\xfe\x00\x00\x00\x00\xca\xfe\xc6\xfe\xc7\xfe\x00\x00\xd2\xfe\x70\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\x89\xff\x90\xff\xb9\xfe\xb5\xfe\x00\x00\x00\x00\xaf\xfe\x00\x00\x00\x00\xb0\xfe\xb8\xfe\x7d\xfe\x7e\xfe\x80\xfe\x00\x00\x81\xfe\x82\xfe\x84\xfe\x85\xfe\x7f\xfe\x00\x00\xaa\xfe\x00\x00\x00\x00\x00\x00\xb4\xfe\x8a\xff\x8c\xff\x85\xff\x87\xff\x81\xff\x83\xff\x6c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfe\x63\xfe\x00\x00\x00\x00\x6e\xfe\x00\x00\x9e\xfe\x9f\xfe\x00\x00\xa3\xfe\xf9\xfe\xf5\xfe\x00\x00\xf6\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xfe\x00\x00\x9a\xff\xff\xfe\x06\xff\xe9\xfe\xe8\xfe\x9d\xfe\x00\x00\x00\x00\x9a\xff\x00\xff\xfb\xfe\x01\xff\xf8\xfe\x02\xff\x00\x00\x00\x00\xcd\xfe\xcc\xfe\xc8\xfe\xc5\xfe\x69\xfe\x68\xfe\xa6\xfe\x6b\xfe\xa6\xfe\x84\xff\x82\xff\x88\xff\x86\xff\x00\x00\xad\xfe\xa9\xfe\xae\xfe\xab\xfe\x00\x00\x00\x00\x00\x00\xa0\xfe\xf4\xfe\xfe\xfe\xfc\xfe\xfa\xfe\x65\xfe\x67\xfe\xa6\xfe\x6a\xfe\x00\x00\x66\xfe"#
+happyDefActions = HappyA# "\xfa\xff\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xa4\xfe\x7f\xff\x59\xff\x00\x00\x6d\xff\x6c\xff\x6a\xff\x69\xff\x66\xff\x00\x00\x47\xff\x46\xff\x64\xff\x00\x00\x00\x00\x3f\xff\x3d\xff\x00\x00\x00\x00\x55\xff\x54\xff\x00\x00\x00\x00\x00\x00\x53\xff\x52\xff\x00\x00\x51\xff\x50\xff\x00\x00\x00\x00\x56\xff\x57\xff\x00\x00\xa4\xfe\x00\x00\x00\x00\x97\xff\x80\xff\x58\xff\x00\x00\x00\x00\x79\xff\x00\x00\x78\xff\x00\x00\x5a\xff\x4c\xff\x00\x00\x00\x00\x94\xff\x00\x00\x00\x00\x00\x00\x77\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xfe\x4d\xff\x7d\xff\x0f\xff\x23\xff\x00\x00\x5e\xff\x00\x00\x2e\xff\x2b\xff\x24\xff\x00\x00\x00\x00\x7c\xff\xa4\xfe\x00\x00\x00\x00\x4a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\x5d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\xff\x00\x00\x00\x00\x15\xff\x10\xff\xa4\xfe\x00\x00\x00\x00\x00\x00\x45\xff\x00\x00\xa4\xfe\x3e\xff\x00\x00\x00\x00\x00\x00\x40\xff\x71\xff\x68\xff\x5c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xfe\x00\x00\xcc\xfe\x5c\xfe\xe4\xfe\xe3\xfe\xe2\xfe\xe1\xfe\xe0\xfe\xdf\xfe\xe5\xfe\xde\xfe\xdd\xfe\xdc\xfe\xdb\xfe\xda\xfe\xd9\xfe\xd2\xfe\xd4\xfe\xd3\xfe\xd8\xfe\xd7\xfe\xd6\xfe\xa0\xff\xd5\xfe\x96\xfe\x85\xfe\x95\xfe\x94\xfe\x93\xfe\x92\xfe\x90\xfe\x91\xfe\x8f\xfe\x8e\xfe\x8d\xfe\x8a\xfe\x87\xfe\x88\xfe\x89\xfe\x86\xfe\x8c\xfe\x8b\xfe\x5a\xfe\x97\xfe\x00\x00\x00\x00\xa5\xfe\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\xef\xfe\x00\x00\xfb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xf4\xff\xf3\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\xed\xff\xec\xff\xeb\xff\xea\xff\xe9\xff\xe8\xff\xe7\xff\xe6\xff\xe5\xff\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xd4\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\xc1\xff\xc0\xff\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\xb5\xff\xb4\xff\xb3\xff\xb2\xff\xb1\xff\xb0\xff\xaf\xff\xae\xff\xad\xff\xac\xff\xab\xff\xaa\xff\xa9\xff\xa8\xff\xa7\xff\xa6\xff\xa5\xff\xa4\xff\xa3\xff\xa2\xff\x76\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\xeb\xfe\x00\x00\x00\x00\xb5\xfe\x00\x00\xbb\xfe\xbc\xfe\xbd\xfe\xbe\xfe\x00\x00\x98\xff\x99\xff\x00\x00\x00\x00\xbf\xfe\x00\x00\x11\xff\x11\xff\x11\xff\x7f\xff\x7e\xff\x11\xff\x11\xff\x98\xfe\xa0\xfe\x00\x00\xb9\xfe\x00\x00\xba\xfe\xa1\xff\x9f\xff\xa4\xfe\x9c\xff\x9b\xff\xe9\xfe\x00\x00\x00\x00\xed\xfe\x00\x00\x4b\xff\x6e\xff\x6b\xff\x6f\xff\x78\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\xff\x43\xff\x45\xff\x79\xff\x00\x00\x77\xff\x17\xff\x18\xff\x70\xff\x16\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\xff\x00\x00\x19\xff\x00\x00\x00\x00\x21\xff\x20\xff\x22\xff\x0e\xff\x00\x00\x00\x00\x0d\xff\x00\x00\x00\x00\x2a\xff\x26\xff\x2b\xff\xa4\xfe\x00\x00\x00\x00\x2f\xff\x67\xff\x25\xff\x00\x00\x33\xff\x00\x00\x36\xff\x4e\xff\x00\x00\x93\xff\x35\xff\x4f\xff\x34\xff\x5b\xff\x00\x00\x31\xff\x30\xff\xa0\xfe\x32\xff\x28\xff\x27\xff\x29\xff\x2d\xff\x2c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x00\x00\x3c\xff\x3a\xff\x3b\xff\x39\xff\x37\xff\x38\xff\x60\xff\x62\xff\x63\xff\x0b\xff\x0c\xff\x00\x00\x00\x00\x49\xff\x00\x00\x65\xff\x60\xfe\x9d\xff\x9e\xff\xea\xfe\xf1\xfe\x00\x00\xce\xfe\xcd\xfe\xcf\xfe\x00\x00\x00\x00\x5d\xfe\x95\xff\x00\x00\x70\xfe\x00\x00\x11\xff\xa0\xfe\x04\xff\x00\x00\x11\xff\x00\x00\x11\xff\x00\x00\x00\x00\x00\x00\x00\x00\x45\xff\x91\xff\x8d\xff\x00\x00\x6d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xff\xc2\xfe\xc1\xfe\xc0\xfe\x00\x00\xb1\xfe\xaf\xfe\xaa\xfe\x00\x00\x00\x00\x00\x00\xa6\xfe\xb4\xfe\x00\x00\x00\x00\xef\xfe\xed\xfe\x00\x00\x72\xff\x76\xff\x76\xff\x76\xff\x00\x00\x00\x00\x76\xff\x00\x00\x73\xff\x76\xfe\x77\xfe\x78\xfe\x00\x00\x73\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\xff\x75\xff\x84\xfe\x00\x00\x00\x00\x81\xfe\x74\xfe\x79\xfe\x75\xfe\x00\x00\x00\x00\x74\xff\x76\xff\x00\x00\x00\x00\x00\x00\x7a\xfe\xf0\xfe\xee\xfe\xb8\xfe\x00\x00\x00\x00\xa8\xfe\x00\x00\x00\x00\xa8\xfe\x00\x00\xb0\xfe\x00\x00\x7b\xff\x8f\xff\x00\x00\x00\x00\x00\x00\x92\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xfe\x00\x00\x00\x00\x8e\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\xff\x00\x00\x12\xff\x00\x00\xa2\xfe\x06\xff\x04\xff\x02\xff\x01\xff\x00\x00\x00\x00\x00\x00\x03\xff\x9f\xfe\x00\x00\x72\xfe\x00\x00\x00\x00\x96\xff\x00\x00\x00\x00\x5e\xfe\xe8\xfe\x00\x00\xec\xfe\x41\xff\x42\xff\x48\xff\x1f\xff\x1e\xff\x1d\xff\x1c\xff\x1a\xff\x1b\xff\x09\xff\x0a\xff\x07\xff\x08\xff\x04\xff\xa3\xfe\x5f\xfe\x00\x00\x00\x00\xd1\xfe\x71\xfe\x00\x00\x9a\xff\xf5\xfe\xf5\xfe\x05\xff\x04\xff\x99\xfe\xa0\xfe\x04\xff\x9a\xfe\xc7\xfe\x6b\xfe\xc9\xfe\x00\x00\x00\x00\xc8\xfe\xc4\xfe\xc5\xfe\x00\x00\xd0\xfe\x6e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\x89\xff\x90\xff\xb7\xfe\xb3\xfe\x00\x00\x00\x00\xad\xfe\x00\x00\x00\x00\xae\xfe\xb6\xfe\x7b\xfe\x7c\xfe\x7e\xfe\x00\x00\x7f\xfe\x80\xfe\x82\xfe\x83\xfe\x7d\xfe\x00\x00\xa8\xfe\x00\x00\x00\x00\x00\x00\xb2\xfe\x8a\xff\x8c\xff\x85\xff\x87\xff\x81\xff\x83\xff\x6a\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x62\xfe\x61\xfe\x00\x00\x00\x00\x6c\xfe\x00\x00\x9c\xfe\x9d\xfe\x00\x00\xa1\xfe\xf7\xfe\xf3\xfe\x00\x00\xf4\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xfe\x00\x00\x9a\xff\xfd\xfe\x04\xff\xe7\xfe\xe6\xfe\x9b\xfe\x00\x00\x00\x00\x9a\xff\xfe\xfe\xf9\xfe\xff\xfe\xf6\xfe\x00\xff\x00\x00\x00\x00\xcb\xfe\xca\xfe\xc6\xfe\xc3\xfe\x67\xfe\x66\xfe\xa4\xfe\x69\xfe\xa4\xfe\x84\xff\x82\xff\x88\xff\x86\xff\x00\x00\xab\xfe\xa7\xfe\xac\xfe\xa9\xfe\x00\x00\x00\x00\x00\x00\x9e\xfe\xf2\xfe\xfc\xfe\xfa\xfe\xf8\xfe\x63\xfe\x65\xfe\xa4\xfe\x68\xfe\x00\x00\x64\xfe"#
happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x05\x00\x05\x00\x09\x00\x0f\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x03\x00\x09\x00\x0f\x00\x00\x00\x40\x00\x0f\x00\x10\x00\x7f\x00\x09\x00\x11\x00\x02\x00\x83\x00\x0f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x09\x00\x03\x00\x09\x00\x55\x00\x44\x00\x0c\x00\x09\x00\x0e\x00\x09\x00\x0a\x00\x09\x00\x29\x00\x0f\x00\x10\x00\x00\x00\x2d\x00\x0f\x00\x10\x00\x42\x00\x7f\x00\x47\x00\x55\x00\x56\x00\x83\x00\x36\x00\x37\x00\x09\x00\x40\x00\x00\x00\x42\x00\x0f\x00\x4f\x00\x43\x00\x4b\x00\x55\x00\x09\x00\x0f\x00\x48\x00\x05\x00\x49\x00\x4b\x00\x0f\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x20\x00\x21\x00\x22\x00\x4b\x00\x51\x00\x5d\x00\x42\x00\x64\x00\x65\x00\x4a\x00\x03\x00\x68\x00\x69\x00\x67\x00\x49\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x05\x00\x41\x00\x80\x00\x51\x00\x09\x00\x6a\x00\x85\x00\x55\x00\x55\x00\x88\x00\x0f\x00\x6a\x00\x67\x00\x03\x00\x55\x00\x56\x00\x25\x00\x51\x00\x52\x00\x05\x00\x09\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x05\x00\x82\x00\x09\x00\x09\x00\x0a\x00\x80\x00\x66\x00\x03\x00\x0f\x00\x42\x00\x09\x00\x41\x00\x44\x00\x44\x00\x09\x00\x09\x00\x0f\x00\x24\x00\x25\x00\x55\x00\x0f\x00\x0f\x00\x58\x00\x09\x00\x44\x00\x20\x00\x21\x00\x22\x00\x52\x00\x55\x00\x55\x00\x11\x00\x43\x00\x20\x00\x21\x00\x22\x00\x57\x00\x48\x00\x21\x00\x21\x00\x4b\x00\x55\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x42\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x09\x00\x09\x00\x09\x00\x0c\x00\x0c\x00\x0e\x00\x0e\x00\x64\x00\x65\x00\x49\x00\x11\x00\x68\x00\x69\x00\x43\x00\x07\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x42\x00\x42\x00\x66\x00\x09\x00\x09\x00\x0f\x00\x05\x00\x06\x00\x88\x00\x0f\x00\x66\x00\x09\x00\x4d\x00\x4f\x00\x4f\x00\x41\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0b\x00\x20\x00\x21\x00\x22\x00\x09\x00\x09\x00\x4a\x00\x52\x00\x3d\x00\x3e\x00\x3f\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\x09\x00\x42\x00\x4a\x00\x0c\x00\x4c\x00\x0e\x00\x4e\x00\x1c\x00\x1d\x00\x1e\x00\x07\x00\x20\x00\x21\x00\x22\x00\x4f\x00\x43\x00\x09\x00\x40\x00\x41\x00\x42\x00\x48\x00\x2a\x00\x07\x00\x4b\x00\x43\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x48\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5e\x00\x40\x00\x41\x00\x42\x00\x09\x00\x63\x00\x09\x00\x64\x00\x65\x00\x0c\x00\x0d\x00\x68\x00\x69\x00\x66\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x3d\x00\x3e\x00\x3f\x00\x64\x00\x65\x00\x0f\x00\x09\x00\x7f\x00\x88\x00\x89\x00\x09\x00\x83\x00\x41\x00\x0c\x00\x11\x00\x0e\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x09\x00\x4f\x00\x09\x00\x4a\x00\x52\x00\x4c\x00\x0f\x00\x4e\x00\x7f\x00\x09\x00\x13\x00\x14\x00\x83\x00\x29\x00\x55\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x36\x00\x37\x00\x23\x00\x24\x00\x25\x00\x09\x00\x43\x00\x2a\x00\x0c\x00\x84\x00\x0e\x00\x48\x00\x2f\x00\x30\x00\x4b\x00\x32\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x09\x00\x09\x00\x05\x00\x0c\x00\x0d\x00\x09\x00\x0b\x00\x64\x00\x65\x00\x11\x00\x12\x00\x68\x00\x69\x00\x11\x00\x12\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x46\x00\x09\x00\x09\x00\x49\x00\x09\x00\x0f\x00\x84\x00\x09\x00\x88\x00\x11\x00\x11\x00\x12\x00\x11\x00\x05\x00\x06\x00\x11\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x09\x00\x09\x00\x3f\x00\x40\x00\x0c\x00\x0d\x00\x0f\x00\x10\x00\x29\x00\x63\x00\x09\x00\x29\x00\x63\x00\x4a\x00\x29\x00\x4c\x00\x0f\x00\x4e\x00\x33\x00\x34\x00\x63\x00\x36\x00\x37\x00\x35\x00\x36\x00\x37\x00\x35\x00\x36\x00\x37\x00\x1c\x00\x1d\x00\x1e\x00\x43\x00\x20\x00\x21\x00\x22\x00\x09\x00\x48\x00\x09\x00\x0c\x00\x4b\x00\x0e\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x0b\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x09\x00\x09\x00\x63\x00\x0c\x00\x4c\x00\x0e\x00\x4e\x00\x64\x00\x65\x00\x11\x00\x12\x00\x68\x00\x69\x00\x55\x00\x0b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x4a\x00\x09\x00\x4c\x00\x09\x00\x4e\x00\x0f\x00\x09\x00\x09\x00\x88\x00\x11\x00\x4d\x00\x11\x00\x4f\x00\x0f\x00\x11\x00\x0b\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x29\x00\x09\x00\x29\x00\x05\x00\x06\x00\x29\x00\x2d\x00\x0f\x00\x10\x00\x2d\x00\x62\x00\x63\x00\x35\x00\x36\x00\x37\x00\x36\x00\x37\x00\x09\x00\x36\x00\x37\x00\x0c\x00\x4c\x00\x0e\x00\x4e\x00\x43\x00\x60\x00\x61\x00\x09\x00\x63\x00\x48\x00\x62\x00\x63\x00\x4b\x00\x0f\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x63\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x20\x00\x21\x00\x22\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x64\x00\x65\x00\x86\x00\x87\x00\x68\x00\x69\x00\x09\x00\x0a\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x15\x00\x09\x00\x86\x00\x87\x00\x09\x00\x0f\x00\x15\x00\x09\x00\x88\x00\x11\x00\x09\x00\x0a\x00\x11\x00\x3f\x00\x40\x00\x11\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x4d\x00\x4c\x00\x4f\x00\x4e\x00\x18\x00\x43\x00\x09\x00\x18\x00\x29\x00\x15\x00\x55\x00\x29\x00\x0f\x00\x4b\x00\x29\x00\x4d\x00\x16\x00\x4f\x00\x86\x00\x87\x00\x35\x00\x36\x00\x37\x00\x35\x00\x36\x00\x37\x00\x35\x00\x36\x00\x37\x00\x20\x00\x21\x00\x22\x00\x43\x00\x15\x00\x5f\x00\x60\x00\x61\x00\x48\x00\x63\x00\x15\x00\x4b\x00\x15\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x45\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x86\x00\x87\x00\x64\x00\x65\x00\x09\x00\x0a\x00\x68\x00\x69\x00\x09\x00\x0a\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x44\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x0f\x00\x09\x00\x09\x00\x88\x00\x11\x00\x62\x00\x63\x00\x11\x00\x0f\x00\x11\x00\x09\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x29\x00\x62\x00\x63\x00\x29\x00\x06\x00\x29\x00\x0a\x00\x0b\x00\x0c\x00\x2d\x00\x0e\x00\x0b\x00\x35\x00\x36\x00\x37\x00\x35\x00\x36\x00\x37\x00\x36\x00\x37\x00\x05\x00\x06\x00\x05\x00\x06\x00\x43\x00\x86\x00\x87\x00\x28\x00\x29\x00\x48\x00\x00\x00\x01\x00\x4b\x00\x0b\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x06\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x55\x00\x56\x00\x64\x00\x65\x00\x42\x00\x43\x00\x68\x00\x69\x00\x55\x00\x56\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x09\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x0f\x00\x0b\x00\x0b\x00\x88\x00\x13\x00\x14\x00\x0b\x00\x05\x00\x47\x00\x09\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x45\x00\x43\x00\x46\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x18\x00\x4c\x00\x18\x00\x4e\x00\x18\x00\x18\x00\x00\x00\x01\x00\x18\x00\x09\x00\x55\x00\x18\x00\x06\x00\x07\x00\x08\x00\x09\x00\x18\x00\x11\x00\x17\x00\x15\x00\x18\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x18\x00\x21\x00\x22\x00\x29\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x34\x00\x44\x00\x36\x00\x37\x00\x64\x00\x65\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x09\x00\x09\x00\x3e\x00\x09\x00\x40\x00\x86\x00\x86\x00\x44\x00\x44\x00\x45\x00\x86\x00\x47\x00\x86\x00\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\x08\x00\x08\x00\x51\x00\x08\x00\x53\x00\x55\x00\x55\x00\x56\x00\x81\x00\x58\x00\x00\x00\x01\x00\x09\x00\x09\x00\x44\x00\x09\x00\x06\x00\x07\x00\x08\x00\x09\x00\x4a\x00\x11\x00\x4c\x00\x11\x00\x4e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x09\x00\x7f\x00\x55\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x86\x00\x21\x00\x22\x00\x29\x00\x04\x00\x29\x00\x46\x00\x06\x00\x4c\x00\x2d\x00\x86\x00\x86\x00\x09\x00\x0b\x00\x34\x00\x0b\x00\x36\x00\x37\x00\x36\x00\x37\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x09\x00\x02\x00\x3e\x00\x01\x00\x40\x00\x4b\x00\x03\x00\x0f\x00\x44\x00\x45\x00\x0d\x00\x47\x00\x55\x00\x41\x00\x4a\x00\x4d\x00\x4c\x00\x4b\x00\x4e\x00\x4b\x00\x55\x00\x51\x00\x55\x00\x53\x00\x01\x00\x55\x00\x56\x00\x4b\x00\x58\x00\x06\x00\x07\x00\x08\x00\x41\x00\x50\x00\x50\x00\x4f\x00\x09\x00\x03\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0f\x00\x55\x00\x55\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x55\x00\x21\x00\x22\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x54\x00\x46\x00\x46\x00\x55\x00\x4f\x00\x4f\x00\x03\x00\x03\x00\x50\x00\x03\x00\x03\x00\x43\x00\x55\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4a\x00\x4a\x00\x3e\x00\x4a\x00\x40\x00\x50\x00\x55\x00\x4f\x00\x44\x00\x45\x00\x50\x00\x47\x00\x50\x00\x43\x00\x4a\x00\x4d\x00\x4c\x00\x43\x00\x4e\x00\x55\x00\x55\x00\x51\x00\x4f\x00\x53\x00\x57\x00\x55\x00\x56\x00\x04\x00\x58\x00\x59\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x01\x00\x54\x00\x54\x00\x54\x00\x54\x00\x06\x00\x07\x00\x08\x00\x54\x00\x54\x00\x54\x00\x54\x00\x54\x00\x09\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x0f\x00\x57\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x57\x00\x21\x00\x22\x00\x54\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x54\x00\x54\x00\x57\x00\x49\x00\x43\x00\x57\x00\x57\x00\x57\x00\x54\x00\x47\x00\x42\x00\x03\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x42\x00\x55\x00\x3e\x00\x50\x00\x40\x00\x55\x00\x4f\x00\x46\x00\x44\x00\x45\x00\x4b\x00\x47\x00\x46\x00\x46\x00\x4a\x00\x01\x00\x4c\x00\x46\x00\x4e\x00\x46\x00\x06\x00\x07\x00\x08\x00\x53\x00\x46\x00\x55\x00\x56\x00\x09\x00\x58\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0f\x00\x4f\x00\x4b\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4f\x00\x21\x00\x22\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x4f\x00\x55\x00\x41\x00\x4f\x00\x04\x00\x43\x00\x43\x00\x55\x00\x05\x00\x49\x00\x57\x00\x01\x00\x57\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x57\x00\x51\x00\x3e\x00\x54\x00\x40\x00\x54\x00\x54\x00\x12\x00\x44\x00\x45\x00\x54\x00\x47\x00\x57\x00\x50\x00\x4a\x00\x57\x00\x4c\x00\x57\x00\x4e\x00\x1e\x00\x1f\x00\x20\x00\x55\x00\x53\x00\x55\x00\x55\x00\x56\x00\x50\x00\x58\x00\x50\x00\x50\x00\x49\x00\x05\x00\x02\x00\x4e\x00\x46\x00\x55\x00\x02\x00\x02\x00\x49\x00\x46\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x50\x00\x3b\x00\x4b\x00\x09\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x4b\x00\x4b\x00\x44\x00\x45\x00\x42\x00\x47\x00\x59\x00\x4f\x00\x4a\x00\x4f\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x4f\x00\x09\x00\x12\x00\x0b\x00\x55\x00\x55\x00\x56\x00\x0f\x00\x58\x00\x50\x00\x46\x00\x13\x00\x14\x00\x43\x00\x1e\x00\x1f\x00\x20\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x59\x00\x48\x00\x50\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x59\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\x01\x00\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x09\x00\x12\x00\x0b\x00\xff\xff\x55\x00\x56\x00\x0f\x00\x58\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x3f\x00\x40\x00\x01\x00\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x08\x00\xff\xff\x4a\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x09\x00\x12\x00\x0b\x00\xff\xff\x55\x00\x56\x00\x0f\x00\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\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\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x0f\x00\x58\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x2f\x00\x30\x00\x31\x00\x3f\x00\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\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\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x0f\x00\x58\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x2f\x00\x30\x00\x31\x00\x3f\x00\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\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\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x1e\x00\x1f\x00\x20\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x01\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x08\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x12\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x01\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x08\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x3f\x00\x40\x00\xff\xff\x1e\x00\x1f\x00\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x08\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x1e\x00\x1f\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x01\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x1e\x00\x1f\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x09\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x55\x00\x56\x00\xff\xff\x58\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x09\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x09\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x09\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x2a\x00\xff\xff\x0f\x00\x09\x00\xff\xff\x0b\x00\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\x2a\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x09\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x09\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x3f\x00\x40\x00\xff\xff\x3f\x00\x40\x00\x44\x00\xff\xff\x46\x00\x44\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\x4a\x00\x4e\x00\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\x55\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\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\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\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\x05\x00\x05\x00\x09\x00\x0a\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x25\x00\x00\x00\x0f\x00\x09\x00\x60\x00\x0f\x00\x10\x00\x00\x00\x09\x00\x65\x00\x05\x00\x11\x00\x40\x00\x09\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x03\x00\x09\x00\x09\x00\x09\x00\x0c\x00\x09\x00\x0e\x00\x09\x00\x0a\x00\x09\x00\x55\x00\x0f\x00\x10\x00\x25\x00\x26\x00\x0f\x00\x10\x00\x24\x00\x25\x00\x26\x00\x47\x00\x09\x00\x44\x00\x02\x00\x0c\x00\x05\x00\x0e\x00\x57\x00\x0f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x45\x00\x55\x00\x05\x00\x09\x00\x4b\x00\x4a\x00\x55\x00\x4b\x00\x4d\x00\x0f\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x51\x00\x21\x00\x22\x00\x23\x00\x55\x00\x43\x00\x51\x00\x66\x00\x67\x00\x4c\x00\x0b\x00\x6a\x00\x6b\x00\x69\x00\x4b\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x05\x00\x41\x00\x82\x00\x4b\x00\x09\x00\x55\x00\x87\x00\x09\x00\x6c\x00\x8a\x00\x0f\x00\x6c\x00\x69\x00\x09\x00\x43\x00\x11\x00\x09\x00\x51\x00\x52\x00\x48\x00\x0f\x00\x11\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x84\x00\x03\x00\x09\x00\x0f\x00\x82\x00\x09\x00\x03\x00\x68\x00\x0f\x00\x2a\x00\x09\x00\x0f\x00\x42\x00\x09\x00\x2f\x00\x09\x00\x0f\x00\x4d\x00\x0c\x00\x4f\x00\x0e\x00\x11\x00\x12\x00\x38\x00\x39\x00\x4f\x00\x21\x00\x22\x00\x23\x00\x21\x00\x22\x00\x23\x00\x03\x00\x45\x00\x21\x00\x22\x00\x23\x00\x09\x00\x4a\x00\x09\x00\x0c\x00\x4d\x00\x0e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x09\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x55\x00\x56\x00\x03\x00\x5f\x00\x4b\x00\x42\x00\x86\x00\x66\x00\x67\x00\x09\x00\x42\x00\x6a\x00\x6b\x00\x07\x00\x0f\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x09\x00\x42\x00\x42\x00\x68\x00\x44\x00\x0f\x00\x68\x00\x09\x00\x8a\x00\x09\x00\x4c\x00\x68\x00\x81\x00\x09\x00\x42\x00\x0f\x00\x85\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x44\x00\x4f\x00\x09\x00\x44\x00\x09\x00\x42\x00\x43\x00\x44\x00\x22\x00\x4a\x00\x0f\x00\x4c\x00\x05\x00\x4e\x00\x44\x00\x41\x00\x15\x00\x55\x00\x56\x00\x0b\x00\x55\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x55\x00\x52\x00\x45\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x4a\x00\x2c\x00\x4d\x00\x4d\x00\x4f\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x44\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x42\x00\x43\x00\x44\x00\x05\x00\x06\x00\x55\x00\x81\x00\x66\x00\x67\x00\x07\x00\x85\x00\x6a\x00\x6b\x00\x07\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x42\x00\x65\x00\x43\x00\x66\x00\x67\x00\x0f\x00\x65\x00\x09\x00\x8a\x00\x8b\x00\x4b\x00\x41\x00\x41\x00\x4f\x00\x4c\x00\x11\x00\x4e\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4f\x00\x09\x00\x52\x00\x52\x00\x3f\x00\x40\x00\x41\x00\x0f\x00\x3f\x00\x40\x00\x41\x00\x65\x00\x09\x00\x15\x00\x2a\x00\x0c\x00\x0d\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x1d\x00\x1e\x00\x1f\x00\x42\x00\x21\x00\x22\x00\x23\x00\x38\x00\x39\x00\x4c\x00\x0b\x00\x4e\x00\x45\x00\x09\x00\x4d\x00\x2c\x00\x4f\x00\x4a\x00\x55\x00\x0f\x00\x4d\x00\x0b\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x22\x00\x09\x00\x4a\x00\x86\x00\x4c\x00\x0b\x00\x4e\x00\x66\x00\x67\x00\x11\x00\x12\x00\x6a\x00\x6b\x00\x55\x00\x09\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x66\x00\x67\x00\x09\x00\x09\x00\x65\x00\x0f\x00\x09\x00\x09\x00\x8a\x00\x09\x00\x11\x00\x11\x00\x12\x00\x0f\x00\x11\x00\x0f\x00\x10\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x81\x00\x2a\x00\x09\x00\x09\x00\x85\x00\x2a\x00\x09\x00\x81\x00\x0f\x00\x0f\x00\x10\x00\x85\x00\x35\x00\x36\x00\x11\x00\x38\x00\x39\x00\x65\x00\x37\x00\x38\x00\x39\x00\x16\x00\x1d\x00\x1e\x00\x1f\x00\x45\x00\x21\x00\x22\x00\x23\x00\x09\x00\x4a\x00\x16\x00\x0c\x00\x4d\x00\x0e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x2a\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x19\x00\x37\x00\x38\x00\x39\x00\x19\x00\x09\x00\x09\x00\x66\x00\x67\x00\x0c\x00\x0d\x00\x6a\x00\x6b\x00\x11\x00\x12\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x43\x00\x09\x00\x16\x00\x09\x00\x17\x00\x0f\x00\x09\x00\x09\x00\x8a\x00\x11\x00\x4d\x00\x11\x00\x4f\x00\x0f\x00\x11\x00\x05\x00\x06\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x2a\x00\x09\x00\x2a\x00\x09\x00\x0c\x00\x2a\x00\x0e\x00\x2f\x00\x09\x00\x0f\x00\x2f\x00\x0c\x00\x0d\x00\x37\x00\x38\x00\x39\x00\x38\x00\x39\x00\x09\x00\x38\x00\x39\x00\x0c\x00\x16\x00\x0e\x00\x16\x00\x45\x00\x20\x00\x21\x00\x22\x00\x23\x00\x4a\x00\x62\x00\x63\x00\x4d\x00\x65\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x16\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x09\x00\x09\x00\x09\x00\x0c\x00\x0c\x00\x0e\x00\x0e\x00\x66\x00\x67\x00\x47\x00\x11\x00\x6a\x00\x6b\x00\x05\x00\x06\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x2a\x00\x09\x00\x46\x00\x55\x00\x09\x00\x0f\x00\x58\x00\x46\x00\x8a\x00\x11\x00\x49\x00\x09\x00\x11\x00\x37\x00\x38\x00\x39\x00\x0b\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x0b\x00\x3f\x00\x40\x00\x0b\x00\x09\x00\x61\x00\x62\x00\x63\x00\x2a\x00\x65\x00\x0f\x00\x2a\x00\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\x64\x00\x65\x00\x06\x00\x37\x00\x38\x00\x39\x00\x37\x00\x38\x00\x39\x00\x20\x00\x21\x00\x22\x00\x23\x00\x88\x00\x89\x00\x45\x00\x06\x00\x0a\x00\x0b\x00\x0c\x00\x4a\x00\x0e\x00\x0b\x00\x4d\x00\x0b\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x05\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x47\x00\x4a\x00\x09\x00\x4c\x00\x49\x00\x4e\x00\x09\x00\x66\x00\x67\x00\x48\x00\x11\x00\x6a\x00\x6b\x00\x64\x00\x65\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x09\x00\x2a\x00\x09\x00\x19\x00\x09\x00\x09\x00\x0f\x00\x09\x00\x0a\x00\x8a\x00\x11\x00\x0f\x00\x11\x00\x19\x00\x37\x00\x38\x00\x39\x00\x19\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x43\x00\x20\x00\x21\x00\x22\x00\x23\x00\x19\x00\x09\x00\x4a\x00\x2a\x00\x4c\x00\x2a\x00\x4e\x00\x0f\x00\x88\x00\x89\x00\x2f\x00\x13\x00\x14\x00\x55\x00\x88\x00\x89\x00\x37\x00\x38\x00\x39\x00\x38\x00\x39\x00\x1d\x00\x1e\x00\x1f\x00\x19\x00\x21\x00\x22\x00\x23\x00\x45\x00\x88\x00\x89\x00\x09\x00\x19\x00\x4a\x00\x19\x00\x2b\x00\x4d\x00\x0f\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x18\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x16\x00\x21\x00\x22\x00\x23\x00\x09\x00\x0a\x00\x19\x00\x66\x00\x67\x00\x09\x00\x0a\x00\x6a\x00\x6b\x00\x09\x00\x0a\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x00\x00\x01\x00\x09\x00\x64\x00\x65\x00\x8a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x11\x00\x64\x00\x65\x00\x05\x00\x06\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x09\x00\x21\x00\x22\x00\x2a\x00\x05\x00\x06\x00\x09\x00\x0a\x00\x11\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x19\x00\x36\x00\x46\x00\x38\x00\x39\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3f\x00\x40\x00\x3e\x00\x09\x00\x40\x00\x2a\x00\x29\x00\x2a\x00\x44\x00\x45\x00\x09\x00\x47\x00\x88\x00\x4c\x00\x4a\x00\x4e\x00\x4c\x00\x36\x00\x4e\x00\x38\x00\x39\x00\x51\x00\x55\x00\x53\x00\x88\x00\x55\x00\x56\x00\x88\x00\x58\x00\x00\x00\x01\x00\x09\x00\x88\x00\x89\x00\x88\x00\x06\x00\x07\x00\x08\x00\x09\x00\x11\x00\x00\x00\x01\x00\x09\x00\x08\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x0f\x00\x55\x00\x56\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x08\x00\x21\x00\x22\x00\x2a\x00\x08\x00\x21\x00\x22\x00\x23\x00\x2f\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x42\x00\x43\x00\x83\x00\x38\x00\x39\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x55\x00\x56\x00\x3e\x00\x09\x00\x40\x00\x88\x00\x81\x00\x04\x00\x44\x00\x45\x00\x06\x00\x47\x00\x4e\x00\x48\x00\x4a\x00\x88\x00\x4c\x00\x0b\x00\x4e\x00\x0b\x00\x09\x00\x51\x00\x09\x00\x53\x00\x01\x00\x55\x00\x56\x00\x44\x00\x58\x00\x06\x00\x07\x00\x08\x00\x88\x00\x4a\x00\x02\x00\x4c\x00\x01\x00\x4e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x03\x00\x0f\x00\x55\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x21\x00\x22\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x55\x00\x0d\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x41\x00\x4b\x00\x3e\x00\x55\x00\x40\x00\x03\x00\x4b\x00\x41\x00\x44\x00\x45\x00\x03\x00\x47\x00\x4b\x00\x50\x00\x4a\x00\x4d\x00\x4c\x00\x55\x00\x4e\x00\x50\x00\x4f\x00\x51\x00\x03\x00\x53\x00\x46\x00\x55\x00\x56\x00\x54\x00\x58\x00\x59\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x01\x00\x55\x00\x55\x00\x55\x00\x46\x00\x06\x00\x07\x00\x08\x00\x55\x00\x4f\x00\x4f\x00\x03\x00\x50\x00\x03\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x43\x00\x55\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4a\x00\x21\x00\x22\x00\x4a\x00\x4a\x00\x50\x00\x43\x00\x50\x00\x50\x00\x55\x00\x4f\x00\x4d\x00\x43\x00\x04\x00\x4f\x00\x43\x00\x49\x00\x55\x00\x55\x00\x42\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x54\x00\x57\x00\x3e\x00\x54\x00\x40\x00\x54\x00\x54\x00\x54\x00\x44\x00\x45\x00\x54\x00\x47\x00\x54\x00\x54\x00\x4a\x00\x01\x00\x4c\x00\x57\x00\x4e\x00\x57\x00\x06\x00\x07\x00\x08\x00\x53\x00\x57\x00\x55\x00\x56\x00\x54\x00\x58\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x57\x00\x54\x00\x57\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x54\x00\x21\x00\x22\x00\x54\x00\x57\x00\x54\x00\x03\x00\x47\x00\x42\x00\x55\x00\x50\x00\x55\x00\x4f\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x01\x00\x46\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4b\x00\x4f\x00\x3e\x00\x4b\x00\x40\x00\x4f\x00\x4f\x00\x12\x00\x44\x00\x45\x00\x41\x00\x47\x00\x4f\x00\x43\x00\x4a\x00\x55\x00\x4c\x00\x04\x00\x4e\x00\x1e\x00\x1f\x00\x20\x00\x55\x00\x53\x00\x43\x00\x55\x00\x56\x00\x05\x00\x58\x00\x57\x00\x57\x00\x54\x00\x54\x00\x54\x00\x49\x00\x54\x00\x50\x00\x57\x00\x50\x00\x57\x00\x57\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x57\x00\x3b\x00\x55\x00\x55\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x51\x00\x50\x00\x44\x00\x45\x00\x50\x00\x47\x00\x49\x00\x05\x00\x4a\x00\x02\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x55\x00\x4e\x00\x12\x00\x46\x00\x02\x00\x55\x00\x56\x00\x09\x00\x58\x00\x02\x00\x49\x00\x46\x00\x50\x00\x0f\x00\x1e\x00\x1f\x00\x20\x00\x4b\x00\x09\x00\x15\x00\x4b\x00\x4b\x00\x42\x00\x42\x00\x59\x00\x55\x00\x4f\x00\x1d\x00\x1e\x00\x1f\x00\x4f\x00\x21\x00\x22\x00\x23\x00\x4f\x00\x46\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2c\x00\x3b\x00\x50\x00\x43\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x59\x00\x48\x00\x44\x00\x45\x00\x50\x00\x47\x00\x59\x00\xff\xff\x4a\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\xff\xff\x12\x00\xff\xff\x09\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x31\x00\x32\x00\x33\x00\x3f\x00\x40\x00\x01\x00\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x08\x00\xff\xff\x4a\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\xff\xff\x12\x00\xff\xff\x09\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x31\x00\x32\x00\x33\x00\x3f\x00\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\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\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x15\x00\x58\x00\x1e\x00\x1f\x00\x20\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x01\x00\x2c\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\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\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x15\x00\x58\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x2c\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\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\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x1e\x00\x1f\x00\x20\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x01\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x01\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x08\x00\x47\x00\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x12\x00\x09\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x0f\x00\x58\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x01\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x08\x00\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x12\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x4b\x00\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x12\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\x08\x00\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x1e\x00\x1f\x00\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x01\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x01\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\xff\xff\xff\xff\x4a\x00\x09\x00\x4c\x00\x12\x00\x4e\x00\x4f\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\x1e\x00\x1f\x00\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\x12\x00\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\xff\xff\x47\x00\x1e\x00\x1f\x00\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\x1e\x00\x1f\x00\x44\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x55\x00\x56\x00\xff\xff\x58\x00\x36\x00\x37\x00\xff\xff\x39\x00\x12\x00\x3b\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x40\x00\xff\xff\xff\xff\x44\x00\x44\x00\x45\x00\x1e\x00\x1f\x00\xff\xff\x4a\x00\x4a\x00\x4c\x00\x4c\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x55\x00\x55\x00\x56\x00\x0f\x00\x58\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x36\x00\x37\x00\xff\xff\x39\x00\xff\xff\x3b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x40\x00\x21\x00\x22\x00\x23\x00\x44\x00\x45\x00\xff\xff\x09\x00\xff\xff\xff\xff\x4a\x00\x2b\x00\x4c\x00\x0f\x00\x4e\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x55\x00\x56\x00\xff\xff\x58\x00\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\x2b\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x31\x00\x32\x00\xff\xff\x34\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x09\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x09\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\x09\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x2b\x00\xff\xff\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x2b\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x2b\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x2b\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x2b\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x2b\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x0f\x00\x09\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x2b\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\x0f\x00\xff\xff\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\x23\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\x09\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x3f\x00\x40\x00\xff\xff\x3f\x00\x40\x00\x44\x00\xff\xff\x46\x00\x44\x00\xff\xff\x46\x00\x4a\x00\xff\xff\x4c\x00\x4a\x00\x4e\x00\x4c\x00\xff\xff\x4e\x00\x3f\x00\x40\x00\xff\xff\x55\x00\xff\xff\x44\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\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\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\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\x8f\x02\x98\x02\x9e\x02\xa9\x02\x07\x00\xb6\x01\xb7\x01\x35\x01\xb4\x01\x41\x00\x08\x00\xac\x01\x15\x02\x36\x01\x5c\x02\x60\x02\xd0\x02\x42\x00\x54\x01\xb8\x02\xb5\x01\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\x3b\x02\x21\x02\xc6\x01\x2c\x00\x3a\x01\xc7\x01\x35\x01\xc8\x01\xb6\x01\xb7\x01\x35\x01\x76\x01\x36\x01\x37\x01\xac\x01\xdb\x01\x36\x01\x5c\x02\x8a\x01\x60\x02\x0c\x02\x2c\x00\x2d\x00\xb9\x02\x78\x01\x63\x00\xd1\x02\x9f\x02\xac\x01\xce\x02\xa3\x02\x4c\x02\x79\x00\xaa\x02\xdb\x01\x07\x00\x3c\x01\x7a\x00\xd7\x02\xb8\x01\x7b\x00\x08\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x90\x02\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x10\x00\x11\x00\xbb\x01\x8d\x01\xad\x01\xdc\x01\x22\x02\x3c\x00\x8b\x00\xc9\x01\x23\x02\x8c\x00\x8d\x00\xaa\x02\xb8\x01\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x50\x02\x43\x01\xb9\x01\xad\x01\x07\x00\x3c\x02\x91\x02\x2c\x00\x2c\x00\x92\x02\x08\x00\x38\x01\x5d\x02\x25\x02\x2c\x00\x2d\x00\xf2\x01\xad\x01\x44\x01\xd2\x02\x54\x01\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\xd5\x02\xca\x01\x07\x00\xb6\x01\xb7\x01\xb9\x01\x9b\x02\x27\x02\x08\x00\x24\x02\x07\x00\x43\x01\x4d\x00\x3a\x01\x07\x00\x07\x00\x08\x00\x42\x02\x57\x01\x2d\x01\x08\x00\x08\x00\x2e\x01\x41\x00\x4d\x00\x10\x00\x11\x00\xbb\x01\x44\x01\x2c\x00\x2c\x00\x70\x01\x79\x00\x10\x00\x11\x00\xbb\x01\xf3\x01\x7a\x00\x32\x01\x67\x00\x7b\x00\x2c\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x26\x02\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xc6\x01\xc6\x01\x41\x00\xc7\x01\xc7\x01\xc1\x02\xc8\x01\x3c\x00\x8b\x00\x54\x02\x73\x01\x8c\x00\x8d\x00\x28\x02\xa4\x02\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\x8a\x01\x8a\x01\x35\x02\x07\x00\x9e\x02\x08\x00\xd3\x02\xd4\x02\x52\x01\x08\x00\x4e\x02\x54\x01\x39\x00\x4e\x02\x3a\x00\x43\x01\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\xcd\x02\x10\x00\x11\x00\xbb\x01\x9e\x02\x07\x00\x69\x02\x44\x01\xcf\x02\xa6\x02\xa7\x02\x08\x00\xa5\x01\x56\x01\x57\x01\x2f\x00\x30\x00\xc6\x01\x78\xff\x50\x01\xc7\x01\x51\x01\xc2\x02\x52\x01\x4d\x01\x0d\x00\x0e\x00\xae\x02\x10\x00\x11\x00\x4e\x01\x78\xff\x79\x00\xb2\x02\x9f\x02\xa0\x02\xa1\x02\x7a\x00\x3b\x00\xa4\x02\x7b\x00\xa9\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x77\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x71\x02\x9f\x02\xa3\x02\xa1\x02\xb4\x02\x72\x02\xc6\x01\x3c\x00\x8b\x00\x12\x02\x70\x02\x8c\x00\x8d\x00\xbc\x01\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\xa5\x02\xa6\x02\xa7\x02\x3c\x00\x3d\x00\x08\x00\x41\x00\x60\x02\xa2\x00\xa3\x00\xc6\x01\x61\x02\x43\x01\xc7\x01\x42\x00\xc3\x02\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\x07\x00\x98\x01\x54\x01\xd8\x01\x44\x01\xd9\x01\x08\x00\xda\x01\x60\x02\xbb\x02\x2f\x00\x59\x01\x64\x02\x43\x00\xdb\x01\x44\x00\x45\x00\x46\x00\x47\x00\x68\x01\x0d\x00\x0e\x00\x69\x01\x10\x00\x11\x00\x12\x00\x48\x00\x49\x00\x55\x01\x56\x01\x57\x01\xc6\x01\x79\x00\x33\x00\xc7\x01\xba\x02\xc4\x02\x7a\x00\x6a\x01\x6b\x01\x7b\x00\x6c\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xcb\x02\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xc6\x01\x41\x00\xbc\x02\x12\x02\x13\x02\x41\x00\x8b\x02\x3c\x00\x8b\x00\xcf\x01\x11\x02\x8c\x00\x8d\x00\xcf\x01\xd0\x01\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\x74\x00\x41\x00\x41\x00\x75\x00\x41\x00\x08\x00\x66\x02\x41\x00\xcc\x02\x42\x00\xcf\x01\xd1\x01\x42\x00\xbd\x02\xbe\x02\x42\x00\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\x35\x01\xc6\x01\x24\x00\x6d\x00\x12\x02\x15\x02\x36\x01\x8b\x01\x5f\x00\xc5\x02\x07\x00\xbe\x01\xc7\x02\x65\x00\xbe\x01\x6e\x00\x08\x00\x6f\x00\x60\x00\x61\x00\x88\x02\x62\x00\x63\x00\x28\x02\xc0\x01\x63\x00\x2a\x02\xc0\x01\x63\x00\x71\x00\x0d\x00\x0e\x00\x79\x00\x10\x00\x11\x00\x4e\x01\xc6\x01\x7a\x00\x16\x02\xc7\x01\x7b\x00\x89\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x8d\x02\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xc6\x01\x41\x00\x73\x02\xc7\x01\x18\x02\x8a\x02\x19\x02\x3c\x00\x8b\x00\xcf\x01\xd2\x01\x8c\x00\x8d\x00\x2c\x00\x5a\x02\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\x56\x00\x41\x00\x57\x00\x41\x00\x58\x00\x08\x00\x41\x00\x07\x00\xd6\x02\x42\x00\x39\x00\x42\x00\x3a\x00\x08\x00\x42\x00\x6e\x02\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\xa0\x01\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\xbe\x01\x35\x01\x76\x01\xbf\x02\xc0\x02\x76\x01\x90\x01\x36\x01\x3a\x01\x91\x01\x83\x02\x84\x02\x36\x02\xc0\x01\x63\x00\x78\x01\x63\x00\xc6\x01\x78\x01\x63\x00\xc7\x01\x1a\x02\x1e\x02\x1b\x02\x79\x00\x0f\x02\xd5\x01\x07\x00\xd6\x01\x7a\x00\x86\x02\x84\x02\x7b\x00\x08\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x76\x02\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x10\x00\x11\x00\x49\x01\x59\x02\x2e\x02\x2f\x02\x30\x02\x3c\x00\x8b\x00\x3d\x02\xab\x02\x8c\x00\x8d\x00\xb6\x01\x6a\x02\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\x7d\x02\x41\x00\x3d\x02\xac\x02\x41\x00\x08\x00\xf5\x01\x41\x00\xca\x02\x42\x00\xb6\x01\x6b\x02\x42\x00\xcc\x01\xcd\x01\x42\x00\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\x39\x00\xce\x01\x3a\x00\xcf\x01\xf7\x01\x6b\xff\x07\x00\xf8\x01\xbe\x01\xfd\x01\x2c\x00\xbe\x01\x08\x00\x6b\xff\xbe\x01\x6b\xff\xfe\x01\x6b\xff\x3d\x02\x5b\x02\xbf\x01\xc0\x01\x63\x00\xc1\x01\xc0\x01\x63\x00\xc2\x01\xc0\x01\x63\x00\x10\x00\x11\x00\x50\x00\x79\x00\x01\x02\xd3\x01\xd4\x01\xd5\x01\x7a\x00\xd6\x01\x02\x02\x7b\x00\x03\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x05\x02\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xad\x02\x2d\x02\x2e\x02\x2f\x02\x30\x02\x3d\x02\x5e\x02\x3c\x00\x8b\x00\xb6\x01\x6c\x02\x8c\x00\x8d\x00\xb6\x01\x6d\x02\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\x06\x02\x41\x00\xb6\x01\x3a\x02\x41\x00\x08\x00\x41\x00\x07\x00\xb5\x01\x42\x00\x09\x02\x0a\x02\x42\x00\x08\x00\x42\x00\x16\x02\x77\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\x4b\x01\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\xbe\x01\x0c\x02\x0d\x02\xbe\x01\x96\x01\x76\x01\x32\x02\x33\x02\x34\x02\x77\x01\x35\x02\x4a\x02\xc3\x01\xc0\x01\x63\x00\xc4\x01\xc0\x01\x63\x00\x78\x01\x63\x00\x1b\x02\x1c\x02\x37\x02\x38\x02\x79\x00\x3d\x02\x3e\x02\x6b\x00\x16\x00\x7a\x00\x2e\x00\x04\x00\x7b\x00\x4c\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x98\x01\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x9a\x02\x2d\x02\x2e\x02\x2f\x02\x30\x02\x2c\x00\x2d\x00\x3c\x00\x8b\x00\x46\x01\x47\x01\x8c\x00\x8d\x00\x2c\x00\x2d\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\x07\x00\x9d\x02\x2d\x02\x2e\x02\x2f\x02\x30\x02\x08\x00\x9b\x01\x9e\x01\x52\x01\x2f\x00\x30\x00\xa3\x01\xaa\x01\xb2\x01\xba\x01\x3a\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xae\x01\x11\x02\xdf\x01\x13\x00\x14\x00\x15\x00\x16\x00\x3b\x00\xd8\x01\xe0\x01\xd9\x01\xe2\x01\xda\x01\xe3\x01\xe4\x01\xac\x01\x18\x00\xe5\x01\x41\x00\xdb\x01\xe6\x01\xa5\x00\xa6\x00\xa7\x00\xa6\xfe\xe7\x01\x42\x00\xe8\x01\xf3\x01\xed\x01\xa8\x00\xa9\x00\xaa\x00\xab\x00\x94\x02\x95\x02\x96\x02\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x1a\x00\x1b\x00\xf0\x01\xb4\x00\xb5\x00\x5f\x00\x4f\x02\x2d\x02\x2e\x02\x2f\x02\x30\x02\x2c\x02\x2d\x02\x2e\x02\x2f\x02\x30\x02\x5b\x01\x22\x01\x62\x00\x63\x00\x3c\x00\x3d\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb6\x00\x23\x00\x24\x01\x25\x01\xb7\x00\x26\x01\x52\x00\x27\x01\x28\x01\x4d\x00\x26\x00\x27\x00\x29\x01\x28\x00\x2a\x01\x50\x01\x5b\x00\x72\x01\x5c\x00\x73\x01\x5d\x00\x2b\x01\x2e\x01\xad\x01\x2f\x01\xb8\x00\x2c\x00\x2c\x00\x2d\x00\x30\x01\x2e\x00\xac\x01\x18\x00\x33\x01\x41\x00\x4d\x00\x41\x00\xa5\x00\xa6\x00\xa7\x00\xa6\xfe\x56\x00\x42\x00\x75\x01\x42\x00\x76\x01\xa8\x00\xa9\x00\xaa\x00\xab\x00\x34\x01\x3c\x01\x2c\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x1a\x00\x1b\x00\x3e\x01\xb4\x00\xb5\x00\x5f\x00\x3f\x01\x76\x01\x47\x01\x41\x01\x44\x01\x7e\x01\x7f\x01\x69\x00\x5d\x00\x85\x01\x5e\x01\x86\x01\x62\x00\x63\x00\x78\x01\x63\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb6\x00\x23\x00\x5e\x00\xb8\x00\xb7\x00\x04\x00\x52\x00\xca\x02\x05\x00\xa9\x02\x26\x00\x27\x00\xb0\x02\x28\x00\x2c\x00\xb1\x02\x5b\x00\xc7\x02\x5c\x00\xb2\x02\x5d\x00\xb4\x02\x2c\x00\xad\x01\x2c\x00\xb8\x00\x18\x00\x2c\x00\x2d\x00\xb6\x02\x2e\x00\xa5\x00\xa6\x00\xa7\x00\xb7\x02\x63\x02\x68\x02\xc9\x02\x07\x00\x97\x02\xa8\x00\xa9\x00\xaa\x00\xab\x00\x08\x00\x2c\x00\xdb\x01\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x1a\x00\x1b\x00\xdb\x01\xb4\x00\xb5\x00\xde\x01\x10\x00\x11\x00\x59\x00\x83\x02\x86\x02\x88\x02\xdb\x01\x8d\x02\x8f\x02\x98\x02\x9a\x02\x40\x02\x52\x02\x53\x02\x56\x02\x2c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb6\x00\x23\x00\x57\x02\x58\x02\xb7\x00\x59\x02\x52\x00\x40\x02\x2c\x00\x70\x02\x26\x00\x27\x00\x63\x02\x28\x00\x68\x02\x75\x02\x5b\x00\x76\x02\x5c\x00\x78\x02\x5d\x00\xdb\x01\xdb\x01\x5d\xfe\x79\x02\xb8\x00\xf5\x01\x2c\x00\x2d\x00\xb0\x01\x2e\x00\x5d\xfe\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x18\x00\x7b\x02\x7c\x02\x7d\x02\x7f\x02\xa5\x00\xa6\x00\xa7\x00\x80\x02\x81\x02\x82\x02\xf7\x01\xfa\x01\x07\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x94\x02\x08\x00\xf5\x01\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x1a\x00\x1b\x00\xe2\x01\xb4\x00\xb5\x00\xfb\x01\x72\x00\x10\x00\x11\x00\x59\x00\xfc\x01\xfd\x01\xf5\x01\x24\x01\x09\x02\x00\x02\x01\x02\xf5\x01\x05\x02\x0f\x02\x1e\x02\x2a\x02\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb6\x00\x23\x00\x3a\x02\x2c\x00\xb7\x00\x40\x02\x52\x00\x2c\x00\x44\x02\x2e\xff\x26\x00\x27\x00\x9b\x01\x28\x00\x2f\xff\x2b\xff\x5b\x00\x18\x00\x5c\x00\x29\xff\x5d\x00\x2a\xff\xa5\x00\xa6\x00\xa7\x00\xb8\x00\x9a\x01\x2c\x00\x2d\x00\x07\x00\x2e\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x08\x00\x9d\x01\x9e\x01\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\x1a\x00\x1b\x00\xa0\x01\xb4\x00\xb5\x00\x58\x00\x10\x00\x11\x00\x59\x00\xa5\x01\x2c\x00\xa7\x01\xa8\x01\xb0\x01\xa9\x01\xde\x01\x2c\x00\x49\x01\x24\x01\xe2\x01\x18\x00\xea\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb6\x00\x23\x00\xe2\x01\x41\x01\xb7\x00\xeb\x01\x52\x00\xec\x01\xed\x01\x19\x00\x26\x00\x27\x00\xef\x01\x28\x00\xf0\x01\x6b\x00\x5b\x00\xe2\x01\x5c\x00\xf5\x01\x5d\x00\x1a\x00\x1b\x00\x1c\x00\x2c\x00\xb8\x00\x2c\x00\x2c\x00\x2d\x00\x32\x01\x2e\x00\x3e\x01\x6b\x00\x75\x00\x49\x01\x54\x01\x59\x01\x5d\x01\x2c\x00\x60\x01\x61\x01\x62\x01\x7d\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x6b\x00\x23\x00\x81\x01\x82\x01\xb8\x02\x24\x00\x25\x00\x18\x00\x83\x01\x84\x01\x26\x00\x27\x00\x8a\x01\x28\x00\xff\xff\x85\x01\x29\x00\x88\x01\x2a\x00\x39\x00\x2b\x00\x3a\x00\x89\x01\x07\x00\x19\x00\x35\x00\x2c\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x6b\x00\x70\x00\x2f\x00\x30\x00\x76\x00\x1a\x00\x1b\x00\x1c\x00\x36\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xff\xff\x77\x00\x07\x00\x13\x00\x14\x00\x15\x00\x16\x00\x66\x01\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\x23\x00\x00\x00\x00\x00\x2c\x02\x24\x00\x25\x00\x18\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x39\x00\x2b\x00\x3a\x00\x00\x00\x07\x00\x19\x00\x35\x00\x00\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x1a\x00\x1b\x00\x1c\x00\x36\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x37\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x3f\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x40\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x39\x00\x2b\x00\x3a\x00\x00\x00\x07\x00\x19\x00\x35\x00\x00\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x1c\x00\x36\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x41\x00\x2a\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\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\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x19\x00\x2b\x00\x35\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\x0d\x00\x0e\x00\x69\x01\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x46\x02\x47\x02\x48\x02\x24\x00\x25\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x41\x00\x2a\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\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\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x19\x00\x2b\x00\x35\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\x0d\x00\x0e\x00\x69\x01\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x46\x02\x47\x02\x49\x02\x24\x00\x25\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x41\x00\x2a\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\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\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x07\x00\x2a\x00\x19\x00\x2b\x00\x35\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\xad\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x78\x00\x10\x00\x11\x00\x12\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x52\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x40\x00\x28\x00\x00\x00\x00\x00\x5b\x00\x07\x00\x5c\x00\x39\x00\x5d\x00\x3a\x00\x19\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x71\x00\x0d\x00\x0e\x00\x72\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5b\x00\x90\x01\x5c\x00\x00\x00\x5d\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x52\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x40\x00\x28\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x39\x00\x5d\x00\x3a\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x12\xff\x12\xff\x00\x00\x1a\x00\x1b\x00\x12\xff\x00\x00\x12\xff\x00\x00\x00\x00\x00\x00\x12\xff\x00\x00\x12\xff\x00\x00\x12\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\xff\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5b\x00\x70\x01\x5c\x00\x00\x00\x5d\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x5e\xff\x28\x00\x00\x00\x5e\xff\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x40\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5b\x00\x07\x00\x5c\x00\x19\x00\x5d\x00\x8e\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1a\x00\x1b\x00\x53\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x18\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5b\x00\x07\x00\x5c\x00\x19\x00\x5d\x00\x6e\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1a\x00\x1b\x00\x5f\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x1a\x00\x1b\x00\x4d\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x65\x00\x5b\x00\x66\x00\x9d\x02\x67\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x00\x00\x00\x00\x4d\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x7a\x01\x5b\x00\x7b\x01\x5c\x00\x7c\x01\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x1a\x00\x1b\x00\x4d\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x65\x00\x5b\x00\x66\x00\xbe\x01\x67\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x00\x00\x00\x00\x4d\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x65\x00\x5b\x00\x66\x00\x5c\x00\xc6\x01\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x1a\x00\x1b\x00\x4d\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x5b\x00\x7b\x01\x5c\x00\x7c\x01\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x00\x00\x00\x00\x4d\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x65\x00\x5b\x00\x66\x00\x5c\x00\x67\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x1a\x00\x1b\x00\x4d\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x53\x00\x7b\x01\x54\x00\x7c\x01\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x52\x00\x00\x00\x00\x00\x4d\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x4e\x00\x5b\x00\x4f\x00\x5c\x00\x50\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x07\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x69\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x31\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x07\x00\x13\x00\x14\x00\x15\x00\x16\x00\x65\x01\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x07\x00\x13\x00\x14\x00\x15\x00\x16\x00\x67\x01\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x1f\x02\x13\x00\x14\x00\x15\x00\x16\x00\x33\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x59\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\xa5\x01\x56\x01\x57\x01\x07\x00\x00\x00\x8e\x01\x00\x00\x33\x00\x00\x00\x08\x00\x07\x00\x00\x00\x6e\x01\x5a\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x37\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x59\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x92\x01\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x33\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x01\x08\x00\x07\x00\x00\x00\x00\x00\x93\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x94\x01\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x63\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x08\x00\x07\x00\x00\x00\x00\x00\x95\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x66\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x66\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x01\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x33\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x59\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x33\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x4d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4e\x01\x62\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x01\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x0d\x00\x0e\x00\x07\x00\x10\x00\x11\x00\x4e\x01\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x01\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x4b\x00\x4c\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x2c\xff\x4d\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x7b\x01\x65\x00\x7c\x01\x66\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2c\x00\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\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\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\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\x94\x02\x9d\x02\xbb\x01\xbc\x01\x07\x00\xbb\x01\xbc\x01\x37\x01\xf7\x01\xb1\x01\x08\x00\x43\x00\x76\x02\x38\x01\x61\x02\xb1\x01\x56\x01\x77\x02\xdc\x02\x73\x01\x1a\x02\x56\x01\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x2c\x02\xcb\x01\x40\x02\x56\x01\xcc\x01\x37\x01\xcd\x01\xbb\x01\xbc\x01\x37\x01\x2c\x00\x38\x01\x39\x01\x47\x02\x59\x01\x38\x01\x61\x02\xaa\x01\x58\x01\x59\x01\x11\x02\xcb\x01\x4f\x00\x56\x01\xcc\x01\xd7\x02\xc6\x02\xf8\x01\xa8\x02\xb1\x01\x57\x01\x58\x01\x59\x01\x7b\x00\xe0\x01\xda\x02\x07\x00\x59\x02\x7c\x00\x2c\x00\xbd\x01\x7d\x00\x08\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x95\x02\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb2\x01\x10\x00\x11\x00\xc0\x01\x2c\x00\x2d\x02\xb2\x01\x3e\x00\x8d\x00\xce\x01\xd2\x02\x8e\x00\x8f\x00\xaf\x02\xbd\x01\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x55\x02\x45\x01\xbe\x01\x92\x01\x07\x00\x2c\x00\x96\x02\x43\x00\x41\x02\x97\x02\x08\x00\x3a\x01\x62\x02\x43\x00\xae\x01\x44\x00\xd5\x02\xb2\x01\x46\x01\x79\x00\x3e\x01\x76\x01\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\xcf\x01\x26\x02\x07\x00\xae\x02\xbe\x01\x07\x00\x28\x02\xa0\x02\x08\x00\x79\x01\x07\x00\x08\x00\x8e\x01\x43\x00\xe0\x01\xcb\x01\x08\x00\x39\x00\xcc\x01\x3a\x00\xc7\x02\xd4\x01\x16\x02\x7b\x01\x65\x00\x51\x02\x10\x00\x11\x00\xc0\x01\x10\x00\x11\x00\xc0\x01\x2a\x02\x7b\x00\x10\x00\x11\x00\xc0\x01\xcb\x01\x7c\x00\xa3\x02\xcc\x01\x7d\x00\xcd\x01\x7e\x00\x7f\x00\x80\x00\x81\x00\xd6\x02\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x2c\x00\x2d\x00\xb9\x01\xe1\x01\xaf\x02\x27\x02\xbf\x02\x3e\x00\x8d\x00\xa3\x02\x29\x02\x8e\x00\x8f\x00\xb3\x02\xba\x01\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x07\x00\xb7\x02\x2b\x02\xa4\x02\x3a\x02\xd3\x02\x08\x00\x53\x02\xb9\x02\x54\x01\x07\x00\x6e\x02\xc1\x01\x65\x02\xc0\x02\x8e\x01\x08\x00\xbd\x02\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x3c\x01\x53\x02\xa3\x02\x4f\x00\x07\x00\xa4\x02\xa5\x02\xa6\x02\x34\x01\x52\x01\x08\x00\x75\x01\xc1\x02\x76\x01\x3c\x01\x45\x01\x3a\x00\x2c\x00\x2d\x00\x90\x02\x2c\x00\x3b\x00\x0a\x00\x0b\x00\x3c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x2c\x00\x46\x01\x7b\x00\x13\x00\x14\x00\x15\x00\x16\x00\x7c\x00\x3d\x00\x39\x00\x7d\x00\x3a\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x4f\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xa4\x02\xa8\x02\xa6\x02\xd8\x02\xd9\x02\x2c\x00\x65\x02\x3e\x00\x8d\x00\xa9\x02\xbe\x02\x8e\x00\x8f\x00\xa9\x02\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x07\x00\x78\xff\xca\x02\x6a\xff\x3e\x00\x3f\x00\x08\x00\xcc\x02\x43\x00\xa4\x00\xa5\x00\x6a\xff\x45\x01\x45\x01\x78\xff\x1f\x02\x44\x00\x20\x02\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x9d\x01\x07\x00\x46\x01\x46\x01\xd4\x02\xab\x02\xac\x02\x08\x00\xaa\x02\xab\x02\xac\x02\x8d\x02\xcb\x01\x3a\x00\x45\x00\x17\x02\x75\x02\x46\x00\x47\x00\x48\x00\x49\x00\x5d\x01\x0d\x00\x0e\x00\x8e\x01\x10\x00\x11\x00\x50\x01\x4a\x00\x4b\x00\x1d\x02\x92\x02\x1e\x02\x7b\x00\x07\x00\x39\x00\x3d\x00\x3a\x00\x7c\x00\x2c\x00\x08\x00\x7d\x00\x5f\x02\x7e\x00\x7f\x00\x80\x00\x81\x00\xd0\x02\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x69\x00\x43\x00\xdd\x01\x6b\x02\xde\x01\x73\x02\xdf\x01\x3e\x00\x8d\x00\xd4\x01\xd5\x01\x8e\x00\x8f\x00\xe0\x01\x1b\x02\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x07\x00\x3e\x00\x3f\x00\x43\x00\x43\x00\x78\x02\x08\x00\x43\x00\x07\x00\xd1\x02\x37\x01\x44\x00\xd4\x01\xd6\x01\x08\x00\x44\x00\x38\x01\x90\x01\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\xa5\x01\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x65\x02\x61\x00\x07\x00\x37\x01\x66\x02\xc3\x01\x43\x00\x65\x02\x08\x00\x38\x01\x3c\x01\x69\x02\x62\x00\x63\x00\x44\x00\x64\x00\x65\x00\x7b\x02\x2d\x02\xc5\x01\x65\x00\x82\x02\x73\x00\x0d\x00\x0e\x00\x7b\x00\x10\x00\x11\x00\x50\x01\xcb\x01\x7c\x00\xfa\x01\xcc\x01\x7d\x00\xc8\x02\x7e\x00\x7f\x00\x80\x00\x81\x00\xc3\x01\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xfc\x01\x2f\x02\xc5\x01\x65\x00\xfd\x01\x43\x00\xcb\x01\x3e\x00\x8d\x00\x17\x02\x18\x02\x8e\x00\x8f\x00\xd4\x01\xd7\x01\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x07\x00\x6a\xff\x43\x00\x02\x02\x43\x00\x03\x02\x08\x00\x43\x00\x07\x00\xdb\x02\x44\x00\x6a\xff\x44\x00\x6a\xff\x08\x00\x44\x00\xc2\x02\xc3\x02\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x4d\x01\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\xc3\x01\xcb\x01\x79\x01\x07\x00\xcc\x01\x79\x01\xc9\x02\x95\x01\xcb\x01\x08\x00\x96\x01\x17\x02\x1a\x02\x3b\x02\xc5\x01\x65\x00\x7b\x01\x65\x00\xcb\x01\x7b\x01\x65\x00\xcc\x01\x06\x02\x8e\x02\x07\x02\x7b\x00\xe3\x01\x10\x00\x11\x00\x5b\x00\x7c\x00\x14\x02\xda\x01\x7d\x00\xdb\x01\x7e\x00\x7f\x00\x80\x00\x81\x00\x08\x02\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xcb\x01\xcb\x01\x43\x00\xcc\x01\xcc\x01\x8f\x02\x23\x02\x3e\x00\x8d\x00\x0a\x02\x44\x00\x8e\x00\x8f\x00\xc4\x02\xc5\x02\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x07\x00\xc3\x01\x43\x00\x0b\x02\x2f\x01\x43\x00\x08\x00\x30\x01\x76\x00\xcf\x02\x44\x00\x77\x00\x1b\x02\x44\x00\xc4\x01\xc5\x01\x65\x00\x4f\x02\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x51\x02\x24\x00\x6f\x00\xa0\x01\x07\x00\xd8\x01\xd9\x01\xda\x01\xc3\x01\xdb\x01\x08\x00\xc3\x01\x67\x00\x52\x01\x70\x00\x53\x01\x71\x00\x54\x01\x88\x02\x89\x02\x9b\x01\xc6\x01\xc5\x01\x65\x00\xc7\x01\xc5\x01\x65\x00\x74\x00\x10\x00\x11\x00\x5b\x00\x42\x02\xb0\x02\x7b\x00\x9d\x01\x37\x02\x38\x02\x39\x02\x7c\x00\x3a\x02\xa3\x01\x7d\x00\xa8\x01\x7e\x00\x7f\x00\x80\x00\x81\x00\xaf\x01\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb3\x01\x58\x00\x43\x00\x59\x00\xb7\x01\x5a\x00\xbf\x01\x3e\x00\x8d\x00\xe4\x01\x44\x00\x8e\x00\x8f\x00\x8b\x02\x89\x02\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x07\x00\xc3\x01\x43\x00\xe5\x01\x43\x00\x07\x00\x08\x00\xbb\x01\x6f\x02\xba\x01\x44\x00\x08\x00\x44\x00\xe7\x01\xc8\x01\xc5\x01\x65\x00\xe8\x01\x79\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x16\x02\x5a\x00\x10\x00\x11\x00\x5b\x00\xe9\x01\x07\x00\xdd\x01\xc3\x01\xde\x01\x79\x01\xdf\x01\x08\x00\x42\x02\xb1\x02\x7a\x01\x2f\x00\x5b\x01\xe0\x01\x42\x02\x60\x02\xc9\x01\xc5\x01\x65\x00\x7b\x01\x65\x00\x4f\x01\x0d\x00\x0e\x00\xea\x01\x10\x00\x11\x00\x50\x01\x7b\x00\x42\x02\x63\x02\x07\x00\xeb\x01\x7c\x00\xec\x01\x33\x00\x7d\x00\x08\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\xed\x01\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xf8\x01\x10\x00\x11\x00\x4b\x01\xbb\x01\x70\x02\xf2\x01\x3e\x00\x8d\x00\xbb\x01\x71\x02\x8e\x00\x8f\x00\xbb\x01\x72\x02\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\x5e\x02\x33\x02\x34\x02\x35\x02\xb1\x01\x18\x00\x43\x00\x0e\x02\x0f\x02\x54\x01\xa7\x00\xa8\x00\xa9\x00\xa4\xfe\x44\x00\x11\x02\x12\x02\x20\x02\x21\x02\xaa\x00\xab\x00\xac\x00\xad\x00\x99\x02\x9a\x02\x9b\x02\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\x1a\x00\x1b\x00\x43\x00\xb6\x00\xb7\x00\x61\x00\x3c\x02\x3d\x02\xbb\x01\x3f\x02\x44\x00\xb2\x02\x32\x02\x33\x02\x34\x02\x35\x02\xf5\x01\x5e\x01\x24\x01\x64\x00\x65\x00\x26\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb8\x00\x23\x00\xd1\x01\xd2\x01\xb9\x00\x27\x01\x54\x00\x61\x00\x6d\x00\x16\x00\x26\x00\x27\x00\x28\x01\x28\x00\x29\x01\xd3\x01\x5d\x00\xd4\x01\x5e\x00\x61\x01\x5f\x00\x64\x00\x65\x00\xb2\x01\x2c\x00\xba\x00\x2a\x01\x2c\x00\x2d\x00\x2b\x01\x2e\x00\xb1\x01\x18\x00\x43\x00\x42\x02\x43\x02\x2c\x01\xa7\x00\xa8\x00\xa9\x00\xa4\xfe\x44\x00\x2e\x00\x04\x00\x07\x00\x2d\x01\xaa\x00\xab\x00\xac\x00\xad\x00\x08\x00\x2c\x00\x2d\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\x1a\x00\x1b\x00\x30\x01\xb6\x00\xb7\x00\x79\x01\x31\x01\x10\x00\x11\x00\x52\x00\x81\x01\x9f\x02\x32\x02\x33\x02\x34\x02\x35\x02\x48\x01\x49\x01\x32\x01\x7b\x01\x65\x00\x35\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb8\x00\x23\x00\x2c\x00\x2d\x00\xb9\x00\x36\x01\x54\x00\x40\x01\x3e\x01\x41\x01\x26\x00\x27\x00\x43\x01\x28\x00\x46\x01\x49\x01\x5d\x00\x82\x01\x5e\x00\x89\x01\x5f\x00\x8a\x01\x5f\x00\xb2\x01\x60\x00\xba\x00\x18\x00\x2c\x00\x2d\x00\x4f\x00\x2e\x00\xa7\x00\xa8\x00\xa9\x00\x6b\x00\x58\x00\xba\x00\x78\x01\x04\x00\x79\x01\xaa\x00\xab\x00\xac\x00\xad\x00\x05\x00\xae\x02\x2c\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\x1a\x00\x1b\x00\xcf\x02\xb6\x00\xb7\x00\xa2\x02\x32\x02\x33\x02\x34\x02\x35\x02\x54\x02\x32\x02\x33\x02\x34\x02\x35\x02\x31\x02\x32\x02\x33\x02\x34\x02\x35\x02\x2c\x00\xb5\x02\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb8\x00\x23\x00\xb6\x02\xb7\x02\xb9\x00\x2c\x00\x54\x00\x9c\x02\xb9\x02\xbc\x02\x26\x00\x27\x00\x9d\x02\x28\x00\xbb\x02\x68\x02\x5d\x00\xcc\x02\x5e\x00\x2c\x00\x5f\x00\x6d\x02\xce\x02\x5b\xfe\x9f\x02\xba\x00\x8b\x02\x2c\x00\x2d\x00\x88\x02\x2e\x00\x5b\xfe\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x07\x01\x08\x01\x09\x01\x0a\x01\x0b\x01\x0c\x01\x0d\x01\x0e\x01\x0f\x01\x10\x01\x11\x01\x12\x01\x13\x01\x18\x00\x2c\x00\xe0\x01\xe0\x01\x8d\x02\xa7\x00\xa8\x00\xa9\x00\xe0\x01\x92\x02\x94\x02\x57\x02\x45\x02\x58\x02\xaa\x00\xab\x00\xac\x00\xad\x00\x99\x02\x5b\x02\x2c\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\x1a\x00\x1b\x00\x5c\x02\xb6\x00\xb7\x00\x5d\x02\x5e\x02\x45\x02\x7a\x02\x68\x02\x6d\x02\x2c\x00\x75\x02\x7b\x02\x7d\x02\xb5\x01\x7e\x02\x0e\x02\x26\x01\xe0\x01\xe0\x01\x23\x02\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb8\x00\x23\x00\x80\x02\xfa\x01\xb9\x00\x81\x02\x54\x00\x82\x02\x84\x02\x85\x02\x26\x00\x27\x00\x86\x02\x28\x00\x87\x02\xfc\x01\x5d\x00\x18\x00\x5e\x00\xfa\x01\x5f\x00\xe7\x01\xa7\x00\xa8\x00\xa9\x00\xba\x00\xfa\x01\x2c\x00\x2d\x00\xff\x01\x2e\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x05\x02\x00\x02\x06\x02\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\x1a\x00\x1b\x00\x01\x02\xb6\x00\xb7\x00\x02\x02\xfa\x01\x0a\x02\x2f\x02\x14\x02\x3f\x02\x2c\x00\x45\x02\x2c\x00\x49\x02\x2c\xff\x2d\xff\x29\xff\x27\xff\x28\xff\x18\x00\x9f\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xb8\x00\x23\x00\xa0\x01\xa2\x01\xb9\x00\xa3\x01\x54\x00\xa5\x01\xaa\x01\x19\x00\x26\x00\x27\x00\xac\x01\x28\x00\xad\x01\xae\x01\x5d\x00\x2c\x00\x5e\x00\xb5\x01\x5f\x00\x1a\x00\x1b\x00\x1c\x00\x2c\x00\xba\x00\xe3\x01\x2c\x00\x2d\x00\x4b\x01\x2e\x00\xe7\x01\xef\x01\xf0\x01\xf1\x01\xf2\x01\x26\x01\xf4\x01\x6d\x00\xe7\x01\x34\x01\xf5\x01\xe7\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xfa\x01\x23\x00\x2c\x00\x2c\x00\xbd\x02\x24\x00\x25\x00\x18\x00\x43\x01\x40\x01\x26\x00\x27\x00\x6d\x00\x28\x00\x77\x00\x4b\x01\x29\x00\x56\x01\x2a\x00\x39\x00\x2b\x00\x3a\x00\x2c\x00\x5b\x01\x19\x00\x60\x01\x63\x01\x2c\x00\x2d\x00\x07\x00\x2e\x00\x64\x01\x65\x01\x80\x01\x6d\x00\x08\x00\x1a\x00\x1b\x00\x1c\x00\x84\x01\x85\x01\x3a\x00\x86\x01\x87\x01\x88\x01\x8e\x01\xff\xff\x2c\x00\x89\x01\x5d\x01\x0d\x00\x0e\x00\x8c\x01\x10\x00\x11\x00\x50\x01\x8d\x01\x72\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x6a\x01\x23\x00\x6d\x00\x78\x00\x31\x02\x24\x00\x25\x00\x18\x00\xff\xff\x79\x00\x26\x00\x27\x00\x07\x00\x28\x00\xff\xff\x00\x00\x29\x00\x00\x00\x2a\x00\x39\x00\x2b\x00\x3a\x00\x00\x00\x00\x00\x19\x00\x00\x00\x07\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x0d\x00\x0e\x00\x6c\x01\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x4b\x02\x4c\x02\x4d\x02\x24\x00\x25\x00\x41\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x42\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x39\x00\x2b\x00\x3a\x00\x00\x00\x00\x00\x19\x00\x00\x00\x07\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x0d\x00\x0e\x00\x6c\x01\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x4b\x02\x4c\x02\x4e\x02\x24\x00\x25\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x43\x00\x2a\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\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\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x07\x00\x2a\x00\x19\x00\x2b\x00\x35\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x3a\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x3b\x00\x0a\x00\x0b\x00\x3c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x18\x00\x6a\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x43\x00\x2a\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\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\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x07\x00\x2a\x00\x19\x00\x2b\x00\x35\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x3a\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x5d\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x67\x01\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x43\x00\x2a\x00\x00\x00\x2b\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\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\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x29\x00\x07\x00\x2a\x00\x19\x00\x2b\x00\x35\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1a\x00\x1b\x00\x1c\x00\x58\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x41\x00\x54\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x42\x00\x28\x00\x00\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x39\x00\x5f\x00\x3a\x00\x19\x00\x07\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x7a\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5d\x00\x95\x01\x5e\x00\x00\x00\x5f\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x41\x00\x54\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x42\x00\x28\x00\x00\x00\x00\x00\x5d\x00\x07\x00\x5e\x00\x39\x00\x5f\x00\x3a\x00\x19\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x1b\x00\x00\x00\x73\x00\x0d\x00\x0e\x00\x74\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5d\x00\x73\x01\x5e\x00\x00\x00\x5f\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x19\x00\x26\x00\x27\x00\x5d\xff\x28\x00\x00\x00\x5d\xff\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x41\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x42\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5d\x00\x07\x00\x5e\x00\x19\x00\x5f\x00\x93\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1a\x00\x1b\x00\x00\x00\x64\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x18\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x00\x00\x00\x00\x5d\x00\x07\x00\x5e\x00\x19\x00\x5f\x00\x71\x01\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1a\x00\x1b\x00\x00\x00\x68\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x23\x00\x19\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x00\x00\x28\x00\x1a\x00\x1b\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x1a\x00\x1b\x00\x4f\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x67\x00\x5d\x00\x68\x00\xa2\x02\x69\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x00\x00\x00\x00\x4f\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x7d\x01\x5d\x00\x7e\x01\x5e\x00\x7f\x01\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x1a\x00\x1b\x00\x4f\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x67\x00\x5d\x00\x68\x00\xc3\x01\x69\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x00\x00\x00\x00\x4f\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x67\x00\x5d\x00\x68\x00\x5e\x00\xcb\x01\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x1a\x00\x1b\x00\x4f\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x5d\x00\x7e\x01\x5e\x00\x7f\x01\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x00\x00\x00\x00\x4f\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x67\x00\x5d\x00\x68\x00\x5e\x00\x69\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x1a\x00\x1b\x00\x4f\x00\x26\x00\x27\x00\x00\x00\x00\x00\x00\x00\x7d\x01\x55\x00\x7e\x01\x56\x00\x7f\x01\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x19\x00\x23\x00\x00\x00\x00\x00\x4d\x00\x4e\x00\x54\x00\x00\x00\x00\x00\x4f\x00\x26\x00\x27\x00\x1a\x00\x1b\x00\x00\x00\x50\x00\x5d\x00\x51\x00\x5e\x00\x52\x00\x5f\x00\x00\x00\x00\x00\x07\x00\x00\x00\x93\x01\x2c\x00\x2c\x00\x2d\x00\x08\x00\x2e\x00\x00\x00\x00\x00\x5c\x01\x30\x00\x00\x00\x1f\x00\x20\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x54\x00\x10\x00\x11\x00\x50\x01\x26\x00\x27\x00\x00\x00\x07\x00\x00\x00\x00\x00\x5d\x00\x37\x00\x5e\x00\x08\x00\x6b\x00\x00\x00\x00\x00\x2f\x00\x5b\x01\x00\x00\x00\x00\x2c\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x6b\x01\x0d\x00\x0e\x00\x6c\x01\x10\x00\x11\x00\x12\x00\x07\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x08\x00\x33\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x6d\x01\x6e\x01\x00\x00\x6f\x01\x36\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x69\x01\x07\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x07\x00\x13\x00\x14\x00\x15\x00\x16\x00\x37\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x07\x00\x13\x00\x14\x00\x15\x00\x16\x00\x68\x01\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x0a\x00\x0b\x00\x32\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x24\x02\x13\x00\x14\x00\x15\x00\x16\x00\x33\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x5b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\xaa\x01\x58\x01\x59\x01\x07\x00\x00\x00\x71\x01\x00\x00\x33\x00\x00\x00\x08\x00\x07\x00\x00\x00\x00\x00\x5c\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x97\x01\x30\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x37\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x08\x00\x07\x00\x00\x00\x00\x00\x98\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x99\x01\x30\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x66\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x01\x08\x00\x07\x00\x00\x00\x00\x00\x9a\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x69\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x01\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x69\x01\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x08\x00\x07\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x5b\x01\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x37\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x08\x00\x07\x00\x00\x00\x00\x00\x5c\x01\x30\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x37\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x08\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x50\x01\x07\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x08\x00\x66\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x07\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x16\x00\x10\xff\x10\xff\x00\x00\x4d\x00\x4e\x00\x10\xff\x00\x00\x10\xff\x4f\x00\x00\x00\x2a\xff\x10\xff\x00\x00\x10\xff\x7d\x01\x10\xff\x7e\x01\x00\x00\x7f\x01\x4d\x00\x4e\x00\x00\x00\x10\xff\x00\x00\x4f\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\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\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\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 = Happy_Data_Array.array (3, 419) [
+happyReduceArr = Happy_Data_Array.array (3, 421) [
(3 , happyReduce_3),
(4 , happyReduce_4),
(5 , happyReduce_5),
@@ -1326,11 +1342,13 @@ happyReduceArr = Happy_Data_Array.array (3, 419) [
(416 , happyReduce_416),
(417 , happyReduce_417),
(418 , happyReduce_418),
- (419 , happyReduce_419)
+ (419 , happyReduce_419),
+ (420 , happyReduce_420),
+ (421 , happyReduce_421)
]
happy_n_terms = 90 :: Int
-happy_n_nonterms = 138 :: Int
+happy_n_nonterms = 140 :: Int
happyReduce_3 = happySpecReduce_1 0# happyReduction_3
happyReduction_3 happy_x_1
@@ -1973,7 +1991,7 @@ happyReduce_94 = happySpecReduce_3 3# happyReduction_94
happyReduction_94 happy_x_3
happy_x_2
happy_x_1
- = case happyOut113 happy_x_2 of { happy_var_2 ->
+ = case happyOut115 happy_x_2 of { happy_var_2 ->
happyIn9
(takeOptionsPragmas happy_var_2
)}
@@ -2334,195 +2352,226 @@ happyReduction_134 happy_x_1
happyReduce_135 = happyMonadReduce 1# 20# happyReduction_135
happyReduction_135 (happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut34 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut35 happy_x_1 of { happy_var_1 ->
(
- let getName (Ident (QName x)) = Just x
+ let getName :: Expr -> Maybe Name
+ getName (Ident (QName x)) = Just x
getName (Underscore r _) = Just (Name r [Hole])
getName _ = Nothing
- containsAbsurd (Absurd _) = True
- containsAbsurd (HiddenArg _ (Named _ e)) = containsAbsurd e
- containsAbsurd (InstanceArg _ (Named _ e)) = containsAbsurd e
- containsAbsurd (Paren _ expr) = containsAbsurd expr
- containsAbsurd (RawApp _ exprs) = any containsAbsurd exprs
- containsAbsurd _ = False
+ isAbsurd :: Expr -> Bool
+ isAbsurd (Absurd _) = True
+ isAbsurd (HiddenArg _ (Named _ e)) = isAbsurd e
+ isAbsurd (InstanceArg _ (Named _ e)) = isAbsurd e
+ isAbsurd (Paren _ expr) = isAbsurd expr
+ isAbsurd (RawApp _ exprs) = any isAbsurd exprs
+ isAbsurd _ = False
in
- if isJust $ find containsAbsurd happy_var_1 then return $ Right happy_var_1 else
- case partition isJust $ map getName happy_var_1 of
- (good, []) -> return $ Left $ map fromJust good
- _ -> fail $ "expected sequence of bound identifiers")}
+ if any isAbsurd happy_var_1 then return $ Right happy_var_1 else
+ case mapM getName happy_var_1 of
+ Just good -> return $ Left good
+ Nothing -> fail $ "expected sequence of bound identifiers")}
) (\r -> happyReturn (happyIn26 r))
-happyReduce_136 = happySpecReduce_0 21# happyReduction_136
-happyReduction_136 = happyIn27
+happyReduce_136 = happyMonadReduce 1# 21# happyReduction_136
+happyReduction_136 (happy_x_1 `HappyStk`
+ happyRest) tk
+ = happyThen (case happyOut35 happy_x_1 of { happy_var_1 ->
+ (
+ let -- interpret an expression as name
+ getName :: Expr -> Maybe Name
+ getName (Ident (QName x)) = Just x
+ getName (Underscore r _) = Just (Name r [Hole])
+ getName _ = Nothing
+
+ getNames :: Expr -> Maybe [Name]
+ getNames (RawApp _ es) = mapM getName es
+ getNames e = singleton `fmap` getName e
+
+ -- interpret an expression as name or list of hidden names
+ getName1 :: Expr -> Maybe [WithHiding Name]
+ getName1 (Ident (QName x)) = Just [WithHiding NotHidden x]
+ getName1 (Underscore r _) = Just [WithHiding NotHidden $ Name r [Hole]]
+ getName1 (HiddenArg _ (Named Nothing e))
+ = map (WithHiding Hidden) `fmap` getNames e
+ getName1 _ = Nothing
+
+ in
+ case mapM getName1 happy_var_1 of
+ Just good -> return $ concat good
+ Nothing -> fail $ "expected sequence of possibly hidden bound identifiers")}
+ ) (\r -> happyReturn (happyIn27 r))
+
+happyReduce_137 = happySpecReduce_0 22# happyReduction_137
+happyReduction_137 = happyIn28
([]
)
-happyReduce_137 = happySpecReduce_2 21# happyReduction_137
-happyReduction_137 happy_x_2
+happyReduce_138 = happySpecReduce_2 22# happyReduction_138
+happyReduction_138 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokString happy_var_1) ->
- case happyOut27 happy_x_2 of { happy_var_2 ->
- happyIn27
+ case happyOut28 happy_x_2 of { happy_var_2 ->
+ happyIn28
(snd happy_var_1 : happy_var_2
)}}
-happyReduce_138 = happySpecReduce_1 22# happyReduction_138
-happyReduction_138 happy_x_1
+happyReduce_139 = happySpecReduce_1 23# happyReduction_139
+happyReduction_139 happy_x_1
= case happyOutTok happy_x_1 of { (TokString happy_var_1) ->
- happyIn28
+ happyIn29
(snd happy_var_1
)}
-happyReduce_139 = happyMonadReduce 1# 23# happyReduction_139
-happyReduction_139 (happy_x_1 `HappyStk`
+happyReduce_140 = happyMonadReduce 1# 24# happyReduction_140
+happyReduction_140 (happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) ->
( mkName happy_var_1)}
- ) (\r -> happyReturn (happyIn29 r))
+ ) (\r -> happyReturn (happyIn30 r))
-happyReduce_140 = happyMonadReduce 1# 24# happyReduction_140
-happyReduction_140 (happy_x_1 `HappyStk`
+happyReduce_141 = happyMonadReduce 1# 25# happyReduction_141
+happyReduction_141 (happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) ->
( fmap QName (mkName happy_var_1))}
- ) (\r -> happyReturn (happyIn30 r))
+ ) (\r -> happyReturn (happyIn31 r))
-happyReduce_141 = happySpecReduce_2 25# happyReduction_141
-happyReduction_141 happy_x_2
+happyReduce_142 = happySpecReduce_2 26# happyReduction_142
+happyReduction_142 happy_x_2
happy_x_1
- = case happyOut44 happy_x_1 of { happy_var_1 ->
- case happyOut31 happy_x_2 of { happy_var_2 ->
- happyIn31
+ = case happyOut45 happy_x_1 of { happy_var_1 ->
+ case happyOut32 happy_x_2 of { happy_var_2 ->
+ happyIn32
(Pi happy_var_1 happy_var_2
)}}
-happyReduce_142 = happySpecReduce_3 25# happyReduction_142
-happyReduction_142 happy_x_3
+happyReduce_143 = happySpecReduce_3 26# happyReduction_143
+happyReduction_143 happy_x_3
happy_x_2
happy_x_1
- = case happyOut57 happy_x_2 of { happy_var_2 ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn31
+ = case happyOut59 happy_x_2 of { happy_var_2 ->
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn32
(forallPi happy_var_2 happy_var_3
)}}
-happyReduce_143 = happySpecReduce_3 25# happyReduction_143
-happyReduction_143 happy_x_3
+happyReduce_144 = happySpecReduce_3 26# happyReduction_144
+happyReduction_144 happy_x_3
happy_x_2
happy_x_1
- = case happyOut37 happy_x_1 of { happy_var_1 ->
+ = case happyOut38 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { (TokSymbol SymArrow happy_var_2) ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn31
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn32
(Fun (getRange (happy_var_1,happy_var_2,happy_var_3))
(RawApp (getRange happy_var_1) happy_var_1)
happy_var_3
)}}}
-happyReduce_144 = happySpecReduce_3 25# happyReduction_144
-happyReduction_144 happy_x_3
+happyReduce_145 = happySpecReduce_3 26# happyReduction_145
+happyReduction_145 happy_x_3
happy_x_2
happy_x_1
- = case happyOut32 happy_x_1 of { happy_var_1 ->
+ = case happyOut33 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { (TokSymbol SymEqual happy_var_2) ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn31
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn32
(Equal (getRange (happy_var_1, happy_var_2, happy_var_3)) happy_var_1 happy_var_3
)}}}
-happyReduce_145 = happySpecReduce_1 25# happyReduction_145
-happyReduction_145 happy_x_1
- = case happyOut32 happy_x_1 of { happy_var_1 ->
- happyIn31
+happyReduce_146 = happySpecReduce_1 26# happyReduction_146
+happyReduction_146 happy_x_1
+ = case happyOut33 happy_x_1 of { happy_var_1 ->
+ happyIn32
(happy_var_1
)}
-happyReduce_146 = happyMonadReduce 1# 26# happyReduction_146
-happyReduction_146 (happy_x_1 `HappyStk`
+happyReduce_147 = happyMonadReduce 1# 27# happyReduction_147
+happyReduction_147 (happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut33 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut34 happy_x_1 of { happy_var_1 ->
( case happy_var_1 of
{ [e] -> return e
; e : es -> return $ WithApp (fuseRange e es) e es
; [] -> fail "impossible: empty with expressions"
})}
- ) (\r -> happyReturn (happyIn32 r))
+ ) (\r -> happyReturn (happyIn33 r))
-happyReduce_147 = happySpecReduce_3 27# happyReduction_147
-happyReduction_147 happy_x_3
+happyReduce_148 = happySpecReduce_3 28# happyReduction_148
+happyReduction_148 happy_x_3
happy_x_2
happy_x_1
- = case happyOut37 happy_x_1 of { happy_var_1 ->
- case happyOut33 happy_x_3 of { happy_var_3 ->
- happyIn33
+ = case happyOut38 happy_x_1 of { happy_var_1 ->
+ case happyOut34 happy_x_3 of { happy_var_3 ->
+ happyIn34
(RawApp (getRange happy_var_1) happy_var_1 : happy_var_3
)}}
-happyReduce_148 = happySpecReduce_1 27# happyReduction_148
-happyReduction_148 happy_x_1
- = case happyOut34 happy_x_1 of { happy_var_1 ->
- happyIn33
- ([RawApp (getRange happy_var_1) happy_var_1]
- )}
-
happyReduce_149 = happySpecReduce_1 28# happyReduction_149
happyReduction_149 happy_x_1
= case happyOut35 happy_x_1 of { happy_var_1 ->
happyIn34
+ ([RawApp (getRange happy_var_1) happy_var_1]
+ )}
+
+happyReduce_150 = happySpecReduce_1 29# happyReduction_150
+happyReduction_150 happy_x_1
+ = case happyOut36 happy_x_1 of { happy_var_1 ->
+ happyIn35
([happy_var_1]
)}
-happyReduce_150 = happySpecReduce_2 28# happyReduction_150
-happyReduction_150 happy_x_2
+happyReduce_151 = happySpecReduce_2 29# happyReduction_151
+happyReduction_151 happy_x_2
happy_x_1
- = case happyOut40 happy_x_1 of { happy_var_1 ->
- case happyOut34 happy_x_2 of { happy_var_2 ->
- happyIn34
+ = case happyOut41 happy_x_1 of { happy_var_1 ->
+ case happyOut35 happy_x_2 of { happy_var_2 ->
+ happyIn35
(happy_var_1 : happy_var_2
)}}
-happyReduce_151 = happySpecReduce_3 29# happyReduction_151
-happyReduction_151 happy_x_3
+happyReduce_152 = happySpecReduce_3 30# happyReduction_152
+happyReduction_152 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) ->
- case happyOut49 happy_x_2 of { happy_var_2 ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn35
+ case happyOut51 happy_x_2 of { happy_var_2 ->
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn36
(Lam (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3
)}}}
-happyReduce_152 = happySpecReduce_1 29# happyReduction_152
-happyReduction_152 happy_x_1
- = case happyOut36 happy_x_1 of { happy_var_1 ->
- happyIn35
+happyReduce_153 = happySpecReduce_1 30# happyReduction_153
+happyReduction_153 happy_x_1
+ = case happyOut37 happy_x_1 of { happy_var_1 ->
+ happyIn36
(happy_var_1
)}
-happyReduce_153 = happyReduce 4# 29# happyReduction_153
-happyReduction_153 (happy_x_4 `HappyStk`
+happyReduce_154 = happyReduce 4# 30# happyReduction_154
+happyReduction_154 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) ->
- case happyOut140 happy_x_2 of { happy_var_2 ->
+ case happyOut142 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) ->
- case happyOut31 happy_x_4 of { happy_var_4 ->
- happyIn35
+ case happyOut32 happy_x_4 of { happy_var_4 ->
+ happyIn36
(Let (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
) `HappyStk` happyRest}}}}
-happyReduce_154 = happySpecReduce_1 29# happyReduction_154
-happyReduction_154 happy_x_1
- = case happyOut40 happy_x_1 of { happy_var_1 ->
- happyIn35
+happyReduce_155 = happySpecReduce_1 30# happyReduction_155
+happyReduction_155 happy_x_1
+ = case happyOut41 happy_x_1 of { happy_var_1 ->
+ happyIn36
(happy_var_1
)}
-happyReduce_155 = happyReduce 4# 29# happyReduction_155
-happyReduction_155 (happy_x_4 `HappyStk`
+happyReduce_156 = happyReduce 4# 30# happyReduction_156
+happyReduction_156 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2530,13 +2579,13 @@ happyReduction_155 (happy_x_4 `HappyStk`
= case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) ->
- case happyOut31 happy_x_4 of { happy_var_4 ->
- happyIn35
+ case happyOut32 happy_x_4 of { happy_var_4 ->
+ happyIn36
(QuoteGoal (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
) `HappyStk` happyRest}}}}
-happyReduce_156 = happyReduce 4# 29# happyReduction_156
-happyReduction_156 (happy_x_4 `HappyStk`
+happyReduce_157 = happyReduce 4# 30# happyReduction_157
+happyReduction_157 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -2544,54 +2593,54 @@ happyReduction_156 (happy_x_4 `HappyStk`
= case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) ->
- case happyOut31 happy_x_4 of { happy_var_4 ->
- happyIn35
+ case happyOut32 happy_x_4 of { happy_var_4 ->
+ happyIn36
(QuoteContext (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
) `HappyStk` happyRest}}}}
-happyReduce_157 = happySpecReduce_2 29# happyReduction_157
-happyReduction_157 happy_x_2
+happyReduce_158 = happySpecReduce_2 30# happyReduction_158
+happyReduction_158 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) ->
- case happyOut37 happy_x_2 of { happy_var_2 ->
- happyIn35
+ case happyOut38 happy_x_2 of { happy_var_2 ->
+ happyIn36
(Tactic (getRange (happy_var_1, happy_var_2)) (RawApp (getRange happy_var_2) happy_var_2) []
)}}
-happyReduce_158 = happyReduce 4# 29# happyReduction_158
-happyReduction_158 (happy_x_4 `HappyStk`
+happyReduce_159 = happyReduce 4# 30# happyReduction_159
+happyReduction_159 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) ->
- case happyOut37 happy_x_2 of { happy_var_2 ->
+ case happyOut38 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymBar happy_var_3) ->
- case happyOut33 happy_x_4 of { happy_var_4 ->
- happyIn35
+ case happyOut34 happy_x_4 of { happy_var_4 ->
+ happyIn36
(Tactic (getRange (happy_var_1, happy_var_2, happy_var_3, happy_var_4)) (RawApp (getRange happy_var_2) happy_var_2) happy_var_4
) `HappyStk` happyRest}}}}
-happyReduce_159 = happyReduce 4# 30# happyReduction_159
-happyReduction_159 (happy_x_4 `HappyStk`
+happyReduce_160 = happyReduce 4# 31# happyReduction_160
+happyReduction_160 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) ->
- case happyOut56 happy_x_3 of { happy_var_3 ->
+ case happyOut58 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) ->
- happyIn36
+ happyIn37
(ExtendedLam (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) (reverse happy_var_3)
) `HappyStk` happyRest}}}}
-happyReduce_160 = happyMonadReduce 2# 30# happyReduction_160
-happyReduction_160 (happy_x_2 `HappyStk`
+happyReduce_161 = happyMonadReduce 2# 31# happyReduction_161
+happyReduction_161 (happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) ->
- case happyOut50 happy_x_2 of { happy_var_2 ->
+ case happyOut52 happy_x_2 of { happy_var_2 ->
( case happy_var_2 of
Left (bs, h) -> if null bs then return $ AbsurdLam r h else
return $ Lam r bs (AbsurdLam r h)
@@ -2600,1278 +2649,1294 @@ happyReduction_160 (happy_x_2 `HappyStk`
p <- exprToLHS (RawApp (getRange es) es);
return $ ExtendedLam (fuseRange happy_var_1 es)
[(p [] [], AbsurdRHS, NoWhere)])}}
- ) (\r -> happyReturn (happyIn36 r))
+ ) (\r -> happyReturn (happyIn37 r))
-happyReduce_161 = happySpecReduce_1 31# happyReduction_161
-happyReduction_161 happy_x_1
- = case happyOut40 happy_x_1 of { happy_var_1 ->
- happyIn37
+happyReduce_162 = happySpecReduce_1 32# happyReduction_162
+happyReduction_162 happy_x_1
+ = case happyOut41 happy_x_1 of { happy_var_1 ->
+ happyIn38
([happy_var_1]
)}
-happyReduce_162 = happySpecReduce_2 31# happyReduction_162
-happyReduction_162 happy_x_2
+happyReduce_163 = happySpecReduce_2 32# happyReduction_163
+happyReduction_163 happy_x_2
happy_x_1
- = case happyOut40 happy_x_1 of { happy_var_1 ->
- case happyOut37 happy_x_2 of { happy_var_2 ->
- happyIn37
+ = case happyOut41 happy_x_1 of { happy_var_1 ->
+ case happyOut38 happy_x_2 of { happy_var_2 ->
+ happyIn38
(happy_var_1 : happy_var_2
)}}
-happyReduce_163 = happySpecReduce_3 32# happyReduction_163
-happyReduction_163 happy_x_3
+happyReduce_164 = happySpecReduce_3 33# happyReduction_164
+happyReduction_164 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) ->
- case happyOut31 happy_x_2 of { happy_var_2 ->
+ case happyOut32 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) ->
- happyIn38
+ happyIn39
(HiddenArg (getRange (happy_var_1,happy_var_2,happy_var_3)) (maybeNamed happy_var_2)
)}}}
-happyReduce_164 = happySpecReduce_2 32# happyReduction_164
-happyReduction_164 happy_x_2
+happyReduce_165 = happySpecReduce_2 33# happyReduction_165
+happyReduction_165 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) ->
- happyIn38
+ happyIn39
(let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r
)}}
-happyReduce_165 = happySpecReduce_1 33# happyReduction_165
-happyReduction_165 happy_x_1
+happyReduce_166 = happySpecReduce_1 34# happyReduction_166
+happyReduction_166 happy_x_1
= case happyOut21 happy_x_1 of { happy_var_1 ->
- happyIn39
+ happyIn40
(Ident happy_var_1
)}
-happyReduce_166 = happySpecReduce_1 33# happyReduction_166
-happyReduction_166 happy_x_1
+happyReduce_167 = happySpecReduce_1 34# happyReduction_167
+happyReduction_167 happy_x_1
= case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) ->
- happyIn39
+ happyIn40
(Lit happy_var_1
)}
-happyReduce_167 = happySpecReduce_1 33# happyReduction_167
-happyReduction_167 happy_x_1
+happyReduce_168 = happySpecReduce_1 34# happyReduction_168
+happyReduction_168 happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) ->
- happyIn39
+ happyIn40
(QuestionMark (getRange happy_var_1) Nothing
)}
-happyReduce_168 = happySpecReduce_1 33# happyReduction_168
-happyReduction_168 happy_x_1
+happyReduce_169 = happySpecReduce_1 34# happyReduction_169
+happyReduction_169 happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) ->
- happyIn39
+ happyIn40
(Underscore (getRange happy_var_1) Nothing
)}
-happyReduce_169 = happySpecReduce_1 33# happyReduction_169
-happyReduction_169 happy_x_1
+happyReduce_170 = happySpecReduce_1 34# happyReduction_170
+happyReduction_170 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) ->
- happyIn39
+ happyIn40
(Prop (getRange happy_var_1)
)}
-happyReduce_170 = happySpecReduce_1 33# happyReduction_170
-happyReduction_170 happy_x_1
+happyReduce_171 = happySpecReduce_1 34# happyReduction_171
+happyReduction_171 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) ->
- happyIn39
+ happyIn40
(Set (getRange happy_var_1)
)}
-happyReduce_171 = happySpecReduce_1 33# happyReduction_171
-happyReduction_171 happy_x_1
+happyReduce_172 = happySpecReduce_1 34# happyReduction_172
+happyReduction_172 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) ->
- happyIn39
+ happyIn40
(Quote (getRange happy_var_1)
)}
-happyReduce_172 = happySpecReduce_1 33# happyReduction_172
-happyReduction_172 happy_x_1
+happyReduce_173 = happySpecReduce_1 34# happyReduction_173
+happyReduction_173 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) ->
- happyIn39
+ happyIn40
(QuoteTerm (getRange happy_var_1)
)}
-happyReduce_173 = happySpecReduce_1 33# happyReduction_173
-happyReduction_173 happy_x_1
+happyReduce_174 = happySpecReduce_1 34# happyReduction_174
+happyReduction_174 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) ->
- happyIn39
+ happyIn40
(Unquote (getRange happy_var_1)
)}
-happyReduce_174 = happySpecReduce_1 33# happyReduction_174
-happyReduction_174 happy_x_1
+happyReduce_175 = happySpecReduce_1 34# happyReduction_175
+happyReduction_175 happy_x_1
= case happyOutTok happy_x_1 of { (TokSetN happy_var_1) ->
- happyIn39
+ happyIn40
(SetN (getRange (fst happy_var_1)) (snd happy_var_1)
)}
-happyReduce_175 = happySpecReduce_3 33# happyReduction_175
-happyReduction_175 happy_x_3
+happyReduce_176 = happySpecReduce_3 34# happyReduction_176
+happyReduction_176 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) ->
- case happyOut31 happy_x_2 of { happy_var_2 ->
+ case happyOut32 happy_x_2 of { happy_var_2 ->
case happyOut17 happy_x_3 of { happy_var_3 ->
- happyIn39
+ happyIn40
(InstanceArg (getRange (happy_var_1,happy_var_2,happy_var_3))
(maybeNamed happy_var_2)
)}}}
-happyReduce_176 = happySpecReduce_3 33# happyReduction_176
-happyReduction_176 happy_x_3
+happyReduce_177 = happySpecReduce_3 34# happyReduction_177
+happyReduction_177 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) ->
- case happyOut31 happy_x_2 of { happy_var_2 ->
+ case happyOut32 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) ->
- happyIn39
+ happyIn40
(Paren (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
)}}}
-happyReduce_177 = happySpecReduce_2 33# happyReduction_177
-happyReduction_177 happy_x_2
+happyReduce_178 = happySpecReduce_2 34# happyReduction_178
+happyReduction_178 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymCloseParen happy_var_2) ->
- happyIn39
+ happyIn40
(Absurd (fuseRange happy_var_1 happy_var_2)
)}}
-happyReduce_178 = happySpecReduce_2 33# happyReduction_178
-happyReduction_178 happy_x_2
+happyReduce_179 = happySpecReduce_2 34# happyReduction_179
+happyReduction_179 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) ->
case happyOut17 happy_x_2 of { happy_var_2 ->
- happyIn39
+ happyIn40
(let r = fuseRange happy_var_1 happy_var_2 in InstanceArg r $ unnamed $ Absurd r
)}}
-happyReduce_179 = happySpecReduce_3 33# happyReduction_179
-happyReduction_179 happy_x_3
+happyReduce_180 = happySpecReduce_3 34# happyReduction_180
+happyReduction_180 happy_x_3
happy_x_2
happy_x_1
= case happyOut15 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { (TokSymbol SymAs happy_var_2) ->
- case happyOut40 happy_x_3 of { happy_var_3 ->
- happyIn39
+ case happyOut41 happy_x_3 of { happy_var_3 ->
+ happyIn40
(As (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_1 happy_var_3
)}}}
-happyReduce_180 = happySpecReduce_2 33# happyReduction_180
-happyReduction_180 happy_x_2
+happyReduce_181 = happySpecReduce_2 34# happyReduction_181
+happyReduction_181 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) ->
- case happyOut40 happy_x_2 of { happy_var_2 ->
- happyIn39
+ case happyOut41 happy_x_2 of { happy_var_2 ->
+ happyIn40
(Dot (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_181 = happyReduce 4# 33# happyReduction_181
-happyReduction_181 (happy_x_4 `HappyStk`
+happyReduce_182 = happyReduce 4# 34# happyReduction_182
+happyReduction_182 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) ->
- case happyOut41 happy_x_3 of { happy_var_3 ->
+ case happyOut42 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) ->
- happyIn39
+ happyIn40
(Rec (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
) `HappyStk` happyRest}}}}
-happyReduce_182 = happyReduce 5# 33# happyReduction_182
-happyReduction_182 (happy_x_5 `HappyStk`
+happyReduce_183 = happyReduce 5# 34# happyReduction_183
+happyReduction_183 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) ->
- case happyOut39 happy_x_2 of { happy_var_2 ->
+ case happyOut40 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymOpenBrace happy_var_3) ->
- case happyOut41 happy_x_4 of { happy_var_4 ->
+ case happyOut42 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) ->
- happyIn39
+ happyIn40
(RecUpdate (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 happy_var_4
) `HappyStk` happyRest}}}}}
-happyReduce_183 = happySpecReduce_1 34# happyReduction_183
-happyReduction_183 happy_x_1
- = case happyOut38 happy_x_1 of { happy_var_1 ->
- happyIn40
- (happy_var_1
- )}
-
-happyReduce_184 = happySpecReduce_1 34# happyReduction_184
+happyReduce_184 = happySpecReduce_1 35# happyReduction_184
happyReduction_184 happy_x_1
= case happyOut39 happy_x_1 of { happy_var_1 ->
- happyIn40
+ happyIn41
(happy_var_1
)}
-happyReduce_185 = happySpecReduce_0 35# happyReduction_185
-happyReduction_185 = happyIn41
- ([]
- )
-
-happyReduce_186 = happySpecReduce_1 35# happyReduction_186
-happyReduction_186 happy_x_1
- = case happyOut42 happy_x_1 of { happy_var_1 ->
+happyReduce_185 = happySpecReduce_1 35# happyReduction_185
+happyReduction_185 happy_x_1
+ = case happyOut40 happy_x_1 of { happy_var_1 ->
happyIn41
(happy_var_1
)}
+happyReduce_186 = happySpecReduce_0 36# happyReduction_186
+happyReduction_186 = happyIn42
+ ([]
+ )
+
happyReduce_187 = happySpecReduce_1 36# happyReduction_187
happyReduction_187 happy_x_1
= case happyOut43 happy_x_1 of { happy_var_1 ->
happyIn42
+ (happy_var_1
+ )}
+
+happyReduce_188 = happySpecReduce_1 37# happyReduction_188
+happyReduction_188 happy_x_1
+ = case happyOut44 happy_x_1 of { happy_var_1 ->
+ happyIn43
([happy_var_1]
)}
-happyReduce_188 = happySpecReduce_3 36# happyReduction_188
-happyReduction_188 happy_x_3
+happyReduce_189 = happySpecReduce_3 37# happyReduction_189
+happyReduction_189 happy_x_3
happy_x_2
happy_x_1
- = case happyOut43 happy_x_1 of { happy_var_1 ->
- case happyOut42 happy_x_3 of { happy_var_3 ->
- happyIn42
+ = case happyOut44 happy_x_1 of { happy_var_1 ->
+ case happyOut43 happy_x_3 of { happy_var_3 ->
+ happyIn43
(happy_var_1 : happy_var_3
)}}
-happyReduce_189 = happySpecReduce_3 37# happyReduction_189
-happyReduction_189 happy_x_3
+happyReduce_190 = happySpecReduce_3 38# happyReduction_190
+happyReduction_190 happy_x_3
happy_x_2
happy_x_1
= case happyOut15 happy_x_1 of { happy_var_1 ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn43
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn44
((happy_var_1, happy_var_3)
)}}
-happyReduce_190 = happySpecReduce_2 38# happyReduction_190
-happyReduction_190 happy_x_2
+happyReduce_191 = happySpecReduce_2 39# happyReduction_191
+happyReduction_191 happy_x_2
happy_x_1
- = case happyOut45 happy_x_1 of { happy_var_1 ->
- happyIn44
+ = case happyOut46 happy_x_1 of { happy_var_1 ->
+ happyIn45
(happy_var_1
)}
-happyReduce_191 = happySpecReduce_1 39# happyReduction_191
-happyReduction_191 happy_x_1
- = case happyOut46 happy_x_1 of { happy_var_1 ->
- happyIn45
+happyReduce_192 = happySpecReduce_1 40# happyReduction_192
+happyReduction_192 happy_x_1
+ = case happyOut47 happy_x_1 of { happy_var_1 ->
+ happyIn46
({-TeleBind-} happy_var_1
)}
-happyReduce_192 = happySpecReduce_2 40# happyReduction_192
-happyReduction_192 happy_x_2
+happyReduce_193 = happySpecReduce_2 41# happyReduction_193
+happyReduction_193 happy_x_2
happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- case happyOut46 happy_x_2 of { happy_var_2 ->
- happyIn46
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ case happyOut47 happy_x_2 of { happy_var_2 ->
+ happyIn47
(happy_var_1 : happy_var_2
)}}
-happyReduce_193 = happySpecReduce_1 40# happyReduction_193
-happyReduction_193 happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- happyIn46
+happyReduce_194 = happySpecReduce_1 41# happyReduction_194
+happyReduction_194 happy_x_1
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ happyIn47
([happy_var_1]
)}
-happyReduce_194 = happyReduce 4# 41# happyReduction_194
-happyReduction_194 (happy_x_4 `HappyStk`
+happyReduce_195 = happyReduce 4# 42# happyReduction_195
+happyReduction_195 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
+ case happyOut50 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) ->
- happyIn47
- (TypedBindings (getRange (happy_var_2,happy_var_3,happy_var_4))
- (setRelevance Irrelevant $ defaultColoredArg happy_var_3)
+ happyIn48
+ (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+ setRelevance Irrelevant happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_195 = happyReduce 4# 41# happyReduction_195
-happyReduction_195 (happy_x_4 `HappyStk`
+happyReduce_196 = happyReduce 4# 42# happyReduction_196
+happyReduction_196 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
+ case happyOut49 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) ->
- happyIn47
- (TypedBindings (getRange (happy_var_2,happy_var_3,happy_var_4))
- (hide $ setRelevance Irrelevant $ defaultColoredArg happy_var_3)
+ happyIn48
+ (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+ setHiding Hidden $
+ setRelevance Irrelevant happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_196 = happyReduce 4# 41# happyReduction_196
-happyReduction_196 (happy_x_4 `HappyStk`
+happyReduce_197 = happyReduce 4# 42# happyReduction_197
+happyReduction_197 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
+ case happyOut49 happy_x_3 of { happy_var_3 ->
case happyOut17 happy_x_4 of { happy_var_4 ->
- happyIn47
- (TypedBindings (getRange (happy_var_2,happy_var_3,happy_var_4))
- (makeInstance $ setRelevance Irrelevant $ defaultColoredArg happy_var_3)
+ happyIn48
+ (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+ setHiding Instance $
+ setRelevance Irrelevant happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_197 = happyReduce 4# 41# happyReduction_197
-happyReduction_197 (happy_x_4 `HappyStk`
+happyReduce_198 = happyReduce 4# 42# happyReduction_198
+happyReduction_198 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
+ case happyOut50 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) ->
- happyIn47
- (TypedBindings (getRange (happy_var_2,happy_var_3,happy_var_4))
- (setRelevance NonStrict $ defaultColoredArg happy_var_3)
+ happyIn48
+ (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+ setRelevance NonStrict happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_198 = happyReduce 4# 41# happyReduction_198
-happyReduction_198 (happy_x_4 `HappyStk`
+happyReduce_199 = happyReduce 4# 42# happyReduction_199
+happyReduction_199 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
+ case happyOut49 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) ->
- happyIn47
- (TypedBindings (getRange (happy_var_2,happy_var_3,happy_var_4))
- (hide $ setRelevance NonStrict $ defaultColoredArg happy_var_3)
+ happyIn48
+ (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+ setHiding Hidden $
+ setRelevance NonStrict happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_199 = happyReduce 4# 41# happyReduction_199
-happyReduction_199 (happy_x_4 `HappyStk`
+happyReduce_200 = happyReduce 4# 42# happyReduction_200
+happyReduction_200 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) ->
- case happyOut48 happy_x_3 of { happy_var_3 ->
+ case happyOut49 happy_x_3 of { happy_var_3 ->
case happyOut17 happy_x_4 of { happy_var_4 ->
- happyIn47
- (TypedBindings (getRange (happy_var_2,happy_var_3,happy_var_4))
- (makeInstance $ setRelevance NonStrict $ defaultColoredArg happy_var_3)
+ happyIn48
+ (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+ setHiding Instance $
+ setRelevance NonStrict happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_200 = happySpecReduce_3 41# happyReduction_200
-happyReduction_200 happy_x_3
+happyReduce_201 = happySpecReduce_3 42# happyReduction_201
+happyReduction_201 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) ->
- case happyOut48 happy_x_2 of { happy_var_2 ->
+ case happyOut50 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) ->
- happyIn47
- (TypedBindings (getRange (happy_var_1,happy_var_2,happy_var_3))
- (defaultColoredArg happy_var_2)
+ happyIn48
+ (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
)}}}
-happyReduce_201 = happySpecReduce_3 41# happyReduction_201
-happyReduction_201 happy_x_3
+happyReduce_202 = happySpecReduce_3 42# happyReduction_202
+happyReduction_202 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) ->
- case happyOut48 happy_x_2 of { happy_var_2 ->
+ case happyOut49 happy_x_2 of { happy_var_2 ->
case happyOut17 happy_x_3 of { happy_var_3 ->
- happyIn47
- (TypedBindings (getRange (happy_var_1,happy_var_2,happy_var_3))
- (makeInstance $ defaultColoredArg happy_var_2)
+ happyIn48
+ (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $
+ setHiding Instance happy_var_2
)}}}
-happyReduce_202 = happySpecReduce_3 41# happyReduction_202
-happyReduction_202 happy_x_3
+happyReduce_203 = happySpecReduce_3 42# happyReduction_203
+happyReduction_203 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) ->
- case happyOut48 happy_x_2 of { happy_var_2 ->
+ case happyOut49 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) ->
- happyIn47
- (TypedBindings (getRange (happy_var_1,happy_var_2,happy_var_3))
- (hide $ defaultColoredArg happy_var_2)
+ happyIn48
+ (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $
+ setHiding Hidden happy_var_2
)}}}
-happyReduce_203 = happySpecReduce_3 41# happyReduction_203
-happyReduction_203 happy_x_3
+happyReduce_204 = happySpecReduce_3 42# happyReduction_204
+happyReduction_204 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) ->
- case happyOut107 happy_x_2 of { happy_var_2 ->
+ case happyOut109 happy_x_2 of { happy_var_2 ->
case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) ->
- happyIn47
+ happyIn48
(tLet (getRange (happy_var_1,happy_var_3)) happy_var_2
)}}}
-happyReduce_204 = happyReduce 4# 41# happyReduction_204
-happyReduction_204 (happy_x_4 `HappyStk`
+happyReduce_205 = happyReduce 4# 42# happyReduction_205
+happyReduction_205 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) ->
- case happyOut140 happy_x_3 of { happy_var_3 ->
+ case happyOut142 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) ->
- happyIn47
+ happyIn48
(tLet (getRange (happy_var_1,happy_var_4)) happy_var_3
) `HappyStk` happyRest}}}
-happyReduce_205 = happySpecReduce_3 42# happyReduction_205
-happyReduction_205 happy_x_3
+happyReduce_206 = happySpecReduce_3 43# happyReduction_206
+happyReduction_206 happy_x_3
happy_x_2
happy_x_1
= case happyOut25 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn48
- (( [], TBind (getRange (happy_var_1,happy_var_2,happy_var_3)) (map mkBoundName_ happy_var_1) happy_var_3 )
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn49
+ (let r = getRange (happy_var_1,happy_var_2,happy_var_3) -- the range is approximate only for TypedBindings
+ in TypedBindings r $ defaultArg $ TBind r (map (pure . mkBoundName_) happy_var_1) happy_var_3
)}}}
-happyReduce_206 = happyMonadReduce 2# 43# happyReduction_206
-happyReduction_206 (happy_x_2 `HappyStk`
+happyReduce_207 = happySpecReduce_3 44# happyReduction_207
+happyReduction_207 happy_x_3
+ happy_x_2
+ happy_x_1
+ = case happyOut27 happy_x_1 of { happy_var_1 ->
+ case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) ->
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn50
+ (let r = getRange (happy_var_1,happy_var_2,happy_var_3) -- the range is approximate only for TypedBindings
+ in TypedBindings r $ defaultArg $ TBind r (map (fmap mkBoundName_) happy_var_1) happy_var_3
+ )}}}
+
+happyReduce_208 = happyMonadReduce 2# 45# happyReduction_208
+happyReduction_208 (happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut53 happy_x_1 of { happy_var_1 ->
(
case reverse happy_var_1 of
Left _ : _ -> parseError "Absurd lambda cannot have a body."
_ : _ -> return [ b | Right b <- happy_var_1 ]
[] -> parsePanic "Empty LamBinds")}
- ) (\r -> happyReturn (happyIn49 r))
+ ) (\r -> happyReturn (happyIn51 r))
-happyReduce_207 = happyMonadReduce 1# 44# happyReduction_207
-happyReduction_207 (happy_x_1 `HappyStk`
+happyReduce_209 = happyMonadReduce 1# 46# happyReduction_209
+happyReduction_209 (happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut52 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut54 happy_x_1 of { happy_var_1 ->
(
case happy_var_1 of
Left lb -> case reverse lb of
Right _ : _ -> parseError "Missing body for lambda"
Left h : _ -> return $ Left ([ b | Right b <- init lb], h)
- _ -> parsePanic "Empty LamBindsAbsurd"
+ _ -> parseError "Unsupported variant of lambda"
Right es -> return $ Right es)}
- ) (\r -> happyReturn (happyIn50 r))
+ ) (\r -> happyReturn (happyIn52 r))
-happyReduce_208 = happySpecReduce_2 45# happyReduction_208
-happyReduction_208 happy_x_2
+happyReduce_210 = happySpecReduce_2 47# happyReduction_210
+happyReduction_210 happy_x_2
happy_x_1
- = case happyOut60 happy_x_1 of { happy_var_1 ->
- case happyOut51 happy_x_2 of { happy_var_2 ->
- happyIn51
+ = case happyOut62 happy_x_1 of { happy_var_1 ->
+ case happyOut53 happy_x_2 of { happy_var_2 ->
+ happyIn53
(map Right happy_var_1 ++ happy_var_2
)}}
-happyReduce_209 = happySpecReduce_2 45# happyReduction_209
-happyReduction_209 happy_x_2
+happyReduce_211 = happySpecReduce_2 47# happyReduction_211
+happyReduction_211 happy_x_2
happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- case happyOut51 happy_x_2 of { happy_var_2 ->
- happyIn51
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ case happyOut53 happy_x_2 of { happy_var_2 ->
+ happyIn53
(Right (DomainFull happy_var_1) : happy_var_2
)}}
-happyReduce_210 = happySpecReduce_1 45# happyReduction_210
-happyReduction_210 happy_x_1
- = case happyOut60 happy_x_1 of { happy_var_1 ->
- happyIn51
+happyReduce_212 = happySpecReduce_1 47# happyReduction_212
+happyReduction_212 happy_x_1
+ = case happyOut62 happy_x_1 of { happy_var_1 ->
+ happyIn53
(map Right happy_var_1
)}
-happyReduce_211 = happySpecReduce_1 45# happyReduction_211
-happyReduction_211 happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- happyIn51
+happyReduce_213 = happySpecReduce_1 47# happyReduction_213
+happyReduction_213 happy_x_1
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ happyIn53
([Right $ DomainFull happy_var_1]
)}
-happyReduce_212 = happySpecReduce_2 45# happyReduction_212
-happyReduction_212 happy_x_2
+happyReduce_214 = happySpecReduce_2 47# happyReduction_214
+happyReduction_214 happy_x_2
happy_x_1
- = happyIn51
+ = happyIn53
([Left NotHidden]
)
-happyReduce_213 = happySpecReduce_2 45# happyReduction_213
-happyReduction_213 happy_x_2
+happyReduce_215 = happySpecReduce_2 47# happyReduction_215
+happyReduction_215 happy_x_2
happy_x_1
- = happyIn51
+ = happyIn53
([Left Hidden]
)
-happyReduce_214 = happySpecReduce_2 45# happyReduction_214
-happyReduction_214 happy_x_2
+happyReduce_216 = happySpecReduce_2 47# happyReduction_216
+happyReduction_216 happy_x_2
happy_x_1
- = happyIn51
+ = happyIn53
([Left Instance]
)
-happyReduce_215 = happySpecReduce_2 46# happyReduction_215
-happyReduction_215 happy_x_2
+happyReduce_217 = happySpecReduce_2 48# happyReduction_217
+happyReduction_217 happy_x_2
happy_x_1
- = case happyOut60 happy_x_1 of { happy_var_1 ->
- case happyOut51 happy_x_2 of { happy_var_2 ->
- happyIn52
+ = case happyOut62 happy_x_1 of { happy_var_1 ->
+ case happyOut53 happy_x_2 of { happy_var_2 ->
+ happyIn54
(Left $ map Right happy_var_1 ++ happy_var_2
)}}
-happyReduce_216 = happySpecReduce_2 46# happyReduction_216
-happyReduction_216 happy_x_2
+happyReduce_218 = happySpecReduce_2 48# happyReduction_218
+happyReduction_218 happy_x_2
happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- case happyOut51 happy_x_2 of { happy_var_2 ->
- happyIn52
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ case happyOut53 happy_x_2 of { happy_var_2 ->
+ happyIn54
(Left $ Right (DomainFull happy_var_1) : happy_var_2
)}}
-happyReduce_217 = happySpecReduce_1 46# happyReduction_217
-happyReduction_217 happy_x_1
- = case happyOut61 happy_x_1 of { happy_var_1 ->
- happyIn52
+happyReduce_219 = happySpecReduce_1 48# happyReduction_219
+happyReduction_219 happy_x_1
+ = case happyOut63 happy_x_1 of { happy_var_1 ->
+ happyIn54
(case happy_var_1 of
Left lb -> Left $ map Right lb
Right es -> Right es
)}
-happyReduce_218 = happySpecReduce_1 46# happyReduction_218
-happyReduction_218 happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- happyIn52
+happyReduce_220 = happySpecReduce_1 48# happyReduction_220
+happyReduction_220 happy_x_1
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ happyIn54
(Left [Right $ DomainFull happy_var_1]
)}
-happyReduce_219 = happySpecReduce_2 46# happyReduction_219
-happyReduction_219 happy_x_2
+happyReduce_221 = happySpecReduce_2 48# happyReduction_221
+happyReduction_221 happy_x_2
happy_x_1
- = happyIn52
+ = happyIn54
(Left [Left NotHidden]
)
-happyReduce_220 = happySpecReduce_2 46# happyReduction_220
-happyReduction_220 happy_x_2
+happyReduce_222 = happySpecReduce_2 48# happyReduction_222
+happyReduction_222 happy_x_2
happy_x_1
- = happyIn52
+ = happyIn54
(Left [Left Hidden]
)
-happyReduce_221 = happySpecReduce_2 46# happyReduction_221
-happyReduction_221 happy_x_2
+happyReduce_223 = happySpecReduce_2 48# happyReduction_223
+happyReduction_223 happy_x_2
happy_x_1
- = happyIn52
+ = happyIn54
(Left [Left Instance]
)
-happyReduce_222 = happyMonadReduce 3# 47# happyReduction_222
-happyReduction_222 (happy_x_3 `HappyStk`
+happyReduce_224 = happyMonadReduce 3# 49# happyReduction_224
+happyReduction_224 (happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
+ = happyThen (case happyOut38 happy_x_1 of { happy_var_1 ->
+ case happyOut32 happy_x_3 of { happy_var_3 ->
( do
p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1) ;
return (p [] [], RHS happy_var_3, NoWhere))}}
- ) (\r -> happyReturn (happyIn53 r))
+ ) (\r -> happyReturn (happyIn55 r))
-happyReduce_223 = happyMonadReduce 1# 48# happyReduction_223
-happyReduction_223 (happy_x_1 `HappyStk`
+happyReduce_225 = happyMonadReduce 1# 50# happyReduction_225
+happyReduction_225 (happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut34 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut35 happy_x_1 of { happy_var_1 ->
( do
p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1);
return (p [] [], AbsurdRHS, NoWhere))}
- ) (\r -> happyReturn (happyIn54 r))
+ ) (\r -> happyReturn (happyIn56 r))
-happyReduce_224 = happySpecReduce_1 49# happyReduction_224
-happyReduction_224 happy_x_1
- = case happyOut53 happy_x_1 of { happy_var_1 ->
- happyIn55
+happyReduce_226 = happySpecReduce_1 51# happyReduction_226
+happyReduction_226 happy_x_1
+ = case happyOut55 happy_x_1 of { happy_var_1 ->
+ happyIn57
(happy_var_1
)}
-happyReduce_225 = happySpecReduce_1 49# happyReduction_225
-happyReduction_225 happy_x_1
- = case happyOut54 happy_x_1 of { happy_var_1 ->
- happyIn55
+happyReduce_227 = happySpecReduce_1 51# happyReduction_227
+happyReduction_227 happy_x_1
+ = case happyOut56 happy_x_1 of { happy_var_1 ->
+ happyIn57
(happy_var_1
)}
-happyReduce_226 = happySpecReduce_3 50# happyReduction_226
-happyReduction_226 happy_x_3
+happyReduce_228 = happySpecReduce_3 52# happyReduction_228
+happyReduction_228 happy_x_3
happy_x_2
happy_x_1
- = case happyOut56 happy_x_1 of { happy_var_1 ->
- case happyOut55 happy_x_3 of { happy_var_3 ->
- happyIn56
+ = case happyOut58 happy_x_1 of { happy_var_1 ->
+ case happyOut57 happy_x_3 of { happy_var_3 ->
+ happyIn58
(happy_var_3 : happy_var_1
)}}
-happyReduce_227 = happySpecReduce_3 50# happyReduction_227
-happyReduction_227 happy_x_3
+happyReduce_229 = happySpecReduce_3 52# happyReduction_229
+happyReduction_229 happy_x_3
happy_x_2
happy_x_1
- = case happyOut54 happy_x_1 of { happy_var_1 ->
- case happyOut55 happy_x_3 of { happy_var_3 ->
- happyIn56
+ = case happyOut56 happy_x_1 of { happy_var_1 ->
+ case happyOut57 happy_x_3 of { happy_var_3 ->
+ happyIn58
([happy_var_3, happy_var_1]
)}}
-happyReduce_228 = happySpecReduce_1 50# happyReduction_228
-happyReduction_228 happy_x_1
- = case happyOut53 happy_x_1 of { happy_var_1 ->
- happyIn56
+happyReduce_230 = happySpecReduce_1 52# happyReduction_230
+happyReduction_230 happy_x_1
+ = case happyOut55 happy_x_1 of { happy_var_1 ->
+ happyIn58
([happy_var_1]
)}
-happyReduce_229 = happySpecReduce_2 51# happyReduction_229
-happyReduction_229 happy_x_2
+happyReduce_231 = happySpecReduce_2 53# happyReduction_231
+happyReduction_231 happy_x_2
happy_x_1
- = case happyOut58 happy_x_1 of { happy_var_1 ->
- happyIn57
+ = case happyOut60 happy_x_1 of { happy_var_1 ->
+ happyIn59
(happy_var_1
)}
-happyReduce_230 = happySpecReduce_2 52# happyReduction_230
-happyReduction_230 happy_x_2
+happyReduce_232 = happySpecReduce_2 54# happyReduction_232
+happyReduction_232 happy_x_2
happy_x_1
- = case happyOut60 happy_x_1 of { happy_var_1 ->
- case happyOut58 happy_x_2 of { happy_var_2 ->
- happyIn58
+ = case happyOut62 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_2 of { happy_var_2 ->
+ happyIn60
(happy_var_1 ++ happy_var_2
)}}
-happyReduce_231 = happySpecReduce_2 52# happyReduction_231
-happyReduction_231 happy_x_2
+happyReduce_233 = happySpecReduce_2 54# happyReduction_233
+happyReduction_233 happy_x_2
happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- case happyOut58 happy_x_2 of { happy_var_2 ->
- happyIn58
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ case happyOut60 happy_x_2 of { happy_var_2 ->
+ happyIn60
(DomainFull happy_var_1 : happy_var_2
)}}
-happyReduce_232 = happySpecReduce_1 52# happyReduction_232
-happyReduction_232 happy_x_1
- = case happyOut60 happy_x_1 of { happy_var_1 ->
- happyIn58
+happyReduce_234 = happySpecReduce_1 54# happyReduction_234
+happyReduction_234 happy_x_1
+ = case happyOut62 happy_x_1 of { happy_var_1 ->
+ happyIn60
(happy_var_1
)}
-happyReduce_233 = happySpecReduce_1 52# happyReduction_233
-happyReduction_233 happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- happyIn58
+happyReduce_235 = happySpecReduce_1 54# happyReduction_235
+happyReduction_235 happy_x_1
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ happyIn60
([DomainFull happy_var_1]
)}
-happyReduce_234 = happySpecReduce_2 53# happyReduction_234
-happyReduction_234 happy_x_2
+happyReduce_236 = happySpecReduce_2 55# happyReduction_236
+happyReduction_236 happy_x_2
happy_x_1
- = case happyOut60 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_2 of { happy_var_2 ->
- happyIn59
+ = case happyOut62 happy_x_1 of { happy_var_1 ->
+ case happyOut61 happy_x_2 of { happy_var_2 ->
+ happyIn61
(happy_var_1 ++ happy_var_2
)}}
-happyReduce_235 = happySpecReduce_2 53# happyReduction_235
-happyReduction_235 happy_x_2
+happyReduce_237 = happySpecReduce_2 55# happyReduction_237
+happyReduction_237 happy_x_2
happy_x_1
- = case happyOut47 happy_x_1 of { happy_var_1 ->
- case happyOut59 happy_x_2 of { happy_var_2 ->
- happyIn59
+ = case happyOut48 happy_x_1 of { happy_var_1 ->
+ case happyOut61 happy_x_2 of { happy_var_2 ->
+ happyIn61
(DomainFull happy_var_1 : happy_var_2
)}}
-happyReduce_236 = happySpecReduce_0 53# happyReduction_236
-happyReduction_236 = happyIn59
+happyReduce_238 = happySpecReduce_0 55# happyReduction_238
+happyReduction_238 = happyIn61
([]
)
-happyReduce_237 = happySpecReduce_1 54# happyReduction_237
-happyReduction_237 happy_x_1
- = case happyOut61 happy_x_1 of { happy_var_1 ->
- happyIn60
+happyReduce_239 = happySpecReduce_1 56# happyReduction_239
+happyReduction_239 happy_x_1
+ = case happyOut63 happy_x_1 of { happy_var_1 ->
+ happyIn62
(case happy_var_1 of
Left lbs -> lbs
Right _ -> fail "expected sequence of bound identifiers, not absurd pattern"
)}
-happyReduce_238 = happySpecReduce_1 55# happyReduction_238
-happyReduction_238 happy_x_1
+happyReduce_240 = happySpecReduce_1 57# happyReduction_240
+happyReduction_240 happy_x_1
= case happyOut23 happy_x_1 of { happy_var_1 ->
- happyIn61
+ happyIn63
(Left [DomainFree defaultArgInfo $ mkBoundName_ happy_var_1]
)}
-happyReduce_239 = happySpecReduce_2 55# happyReduction_239
-happyReduction_239 happy_x_2
+happyReduce_241 = happySpecReduce_2 57# happyReduction_241
+happyReduction_241 happy_x_2
happy_x_1
= case happyOut23 happy_x_2 of { happy_var_2 ->
- happyIn61
+ happyIn63
(Left [DomainFree (setRelevance Irrelevant $ defaultArgInfo) $ mkBoundName_ happy_var_2]
)}
-happyReduce_240 = happySpecReduce_2 55# happyReduction_240
-happyReduction_240 happy_x_2
+happyReduce_242 = happySpecReduce_2 57# happyReduction_242
+happyReduction_242 happy_x_2
happy_x_1
= case happyOut23 happy_x_2 of { happy_var_2 ->
- happyIn61
+ happyIn63
(Left [DomainFree (setRelevance NonStrict $ defaultArgInfo) $ mkBoundName_ happy_var_2]
)}
-happyReduce_241 = happySpecReduce_3 55# happyReduction_241
-happyReduction_241 happy_x_3
+happyReduce_243 = happySpecReduce_3 57# happyReduction_243
+happyReduction_243 happy_x_3
happy_x_2
happy_x_1
= case happyOut26 happy_x_2 of { happy_var_2 ->
- happyIn61
+ happyIn63
(either (Left . map (DomainFree (setHiding Hidden $ defaultArgInfo) . mkBoundName_)) Right happy_var_2
)}
-happyReduce_242 = happySpecReduce_3 55# happyReduction_242
-happyReduction_242 happy_x_3
+happyReduce_244 = happySpecReduce_3 57# happyReduction_244
+happyReduction_244 happy_x_3
happy_x_2
happy_x_1
= case happyOut25 happy_x_2 of { happy_var_2 ->
- happyIn61
+ happyIn63
(Left $ map (DomainFree (setHiding Instance $ defaultArgInfo) . mkBoundName_) happy_var_2
)}
-happyReduce_243 = happyReduce 4# 55# happyReduction_243
-happyReduction_243 (happy_x_4 `HappyStk`
+happyReduce_245 = happyReduce 4# 57# happyReduction_245
+happyReduction_245 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut25 happy_x_3 of { happy_var_3 ->
- happyIn61
+ happyIn63
(Left $ map (DomainFree (setHiding Hidden $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3
) `HappyStk` happyRest}
-happyReduce_244 = happyReduce 4# 55# happyReduction_244
-happyReduction_244 (happy_x_4 `HappyStk`
+happyReduce_246 = happyReduce 4# 57# happyReduction_246
+happyReduction_246 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut25 happy_x_3 of { happy_var_3 ->
- happyIn61
+ happyIn63
(Left $ map (DomainFree (setHiding Instance $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3
) `HappyStk` happyRest}
-happyReduce_245 = happyReduce 4# 55# happyReduction_245
-happyReduction_245 (happy_x_4 `HappyStk`
+happyReduce_247 = happyReduce 4# 57# happyReduction_247
+happyReduction_247 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut25 happy_x_3 of { happy_var_3 ->
- happyIn61
+ happyIn63
(Left $ map (DomainFree (setHiding Hidden $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3
) `HappyStk` happyRest}
-happyReduce_246 = happyReduce 4# 55# happyReduction_246
-happyReduction_246 (happy_x_4 `HappyStk`
+happyReduce_248 = happyReduce 4# 57# happyReduction_248
+happyReduction_248 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut25 happy_x_3 of { happy_var_3 ->
- happyIn61
+ happyIn63
(Left $ map (DomainFree (setHiding Instance $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3
) `HappyStk` happyRest}
-happyReduce_247 = happyMonadReduce 1# 56# happyReduction_247
-happyReduction_247 (happy_x_1 `HappyStk`
+happyReduce_249 = happyMonadReduce 1# 58# happyReduction_249
+happyReduction_249 (happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut63 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut65 happy_x_1 of { happy_var_1 ->
( mergeImportDirectives happy_var_1)}
- ) (\r -> happyReturn (happyIn62 r))
+ ) (\r -> happyReturn (happyIn64 r))
-happyReduce_248 = happySpecReduce_2 57# happyReduction_248
-happyReduction_248 happy_x_2
+happyReduce_250 = happySpecReduce_2 59# happyReduction_250
+happyReduction_250 happy_x_2
happy_x_1
- = case happyOut64 happy_x_1 of { happy_var_1 ->
- case happyOut63 happy_x_2 of { happy_var_2 ->
- happyIn63
+ = case happyOut66 happy_x_1 of { happy_var_1 ->
+ case happyOut65 happy_x_2 of { happy_var_2 ->
+ happyIn65
(happy_var_1 : happy_var_2
)}}
-happyReduce_249 = happySpecReduce_0 57# happyReduction_249
-happyReduction_249 = happyIn63
+happyReduce_251 = happySpecReduce_0 59# happyReduction_251
+happyReduction_251 = happyIn65
([]
)
-happyReduce_250 = happySpecReduce_1 58# happyReduction_250
-happyReduction_250 happy_x_1
+happyReduce_252 = happySpecReduce_1 60# happyReduction_252
+happyReduction_252 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) ->
- happyIn64
+ happyIn66
(defaultImportDir { importDirRange = getRange happy_var_1, publicOpen = True }
)}
-happyReduce_251 = happySpecReduce_1 58# happyReduction_251
-happyReduction_251 happy_x_1
- = case happyOut65 happy_x_1 of { happy_var_1 ->
- happyIn64
+happyReduce_253 = happySpecReduce_1 60# happyReduction_253
+happyReduction_253 happy_x_1
+ = case happyOut67 happy_x_1 of { happy_var_1 ->
+ happyIn66
(defaultImportDir { importDirRange = snd happy_var_1, usingOrHiding = fst happy_var_1 }
)}
-happyReduce_252 = happySpecReduce_1 58# happyReduction_252
-happyReduction_252 happy_x_1
- = case happyOut66 happy_x_1 of { happy_var_1 ->
- happyIn64
+happyReduce_254 = happySpecReduce_1 60# happyReduction_254
+happyReduction_254 happy_x_1
+ = case happyOut68 happy_x_1 of { happy_var_1 ->
+ happyIn66
(defaultImportDir { importDirRange = snd happy_var_1, renaming = fst happy_var_1 }
)}
-happyReduce_253 = happyReduce 4# 59# happyReduction_253
-happyReduction_253 (happy_x_4 `HappyStk`
+happyReduce_255 = happyReduce 4# 61# happyReduction_255
+happyReduction_255 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) ->
- case happyOut71 happy_x_3 of { happy_var_3 ->
+ case happyOut73 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) ->
- happyIn65
+ happyIn67
((Using happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
) `HappyStk` happyRest}}}}
-happyReduce_254 = happyReduce 4# 59# happyReduction_254
-happyReduction_254 (happy_x_4 `HappyStk`
+happyReduce_256 = happyReduce 4# 61# happyReduction_256
+happyReduction_256 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) ->
- case happyOut71 happy_x_3 of { happy_var_3 ->
+ case happyOut73 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) ->
- happyIn65
+ happyIn67
((Hiding happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
) `HappyStk` happyRest}}}}
-happyReduce_255 = happyReduce 4# 60# happyReduction_255
-happyReduction_255 (happy_x_4 `HappyStk`
+happyReduce_257 = happyReduce 4# 62# happyReduction_257
+happyReduction_257 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) ->
- case happyOut67 happy_x_3 of { happy_var_3 ->
+ case happyOut69 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) ->
- happyIn66
+ happyIn68
((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
) `HappyStk` happyRest}}}}
-happyReduce_256 = happySpecReduce_3 60# happyReduction_256
-happyReduction_256 happy_x_3
+happyReduce_258 = happySpecReduce_3 62# happyReduction_258
+happyReduction_258 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) ->
case happyOutTok happy_x_2 of { (TokSymbol SymOpenParen happy_var_2) ->
case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) ->
- happyIn66
+ happyIn68
(([] , getRange (happy_var_1,happy_var_2,happy_var_3))
)}}}
-happyReduce_257 = happySpecReduce_3 61# happyReduction_257
-happyReduction_257 happy_x_3
+happyReduce_259 = happySpecReduce_3 63# happyReduction_259
+happyReduction_259 happy_x_3
happy_x_2
happy_x_1
- = case happyOut68 happy_x_1 of { happy_var_1 ->
- case happyOut67 happy_x_3 of { happy_var_3 ->
- happyIn67
+ = case happyOut70 happy_x_1 of { happy_var_1 ->
+ case happyOut69 happy_x_3 of { happy_var_3 ->
+ happyIn69
(happy_var_1 : happy_var_3
)}}
-happyReduce_258 = happySpecReduce_1 61# happyReduction_258
-happyReduction_258 happy_x_1
- = case happyOut68 happy_x_1 of { happy_var_1 ->
- happyIn67
+happyReduce_260 = happySpecReduce_1 63# happyReduction_260
+happyReduction_260 happy_x_1
+ = case happyOut70 happy_x_1 of { happy_var_1 ->
+ happyIn69
([happy_var_1]
)}
-happyReduce_259 = happySpecReduce_3 62# happyReduction_259
-happyReduction_259 happy_x_3
+happyReduce_261 = happySpecReduce_3 64# happyReduction_261
+happyReduction_261 happy_x_3
happy_x_2
happy_x_1
- = case happyOut69 happy_x_1 of { happy_var_1 ->
+ = case happyOut71 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) ->
case happyOut15 happy_x_3 of { happy_var_3 ->
- happyIn68
+ happyIn70
(Renaming happy_var_1 happy_var_3 (getRange happy_var_2)
)}}}
-happyReduce_260 = happySpecReduce_2 63# happyReduction_260
-happyReduction_260 happy_x_2
+happyReduce_262 = happySpecReduce_2 65# happyReduction_262
+happyReduction_262 happy_x_2
happy_x_1
= case happyOut15 happy_x_2 of { happy_var_2 ->
- happyIn69
+ happyIn71
(ImportedName happy_var_2
)}
-happyReduce_261 = happySpecReduce_3 63# happyReduction_261
-happyReduction_261 happy_x_3
+happyReduce_263 = happySpecReduce_3 65# happyReduction_263
+happyReduction_263 happy_x_3
happy_x_2
happy_x_1
= case happyOut15 happy_x_3 of { happy_var_3 ->
- happyIn69
+ happyIn71
(ImportedModule happy_var_3
)}
-happyReduce_262 = happySpecReduce_1 64# happyReduction_262
-happyReduction_262 happy_x_1
+happyReduce_264 = happySpecReduce_1 66# happyReduction_264
+happyReduction_264 happy_x_1
= case happyOut15 happy_x_1 of { happy_var_1 ->
- happyIn70
+ happyIn72
(ImportedName happy_var_1
)}
-happyReduce_263 = happySpecReduce_2 64# happyReduction_263
-happyReduction_263 happy_x_2
+happyReduce_265 = happySpecReduce_2 66# happyReduction_265
+happyReduction_265 happy_x_2
happy_x_1
= case happyOut15 happy_x_2 of { happy_var_2 ->
- happyIn70
+ happyIn72
(ImportedModule happy_var_2
)}
-happyReduce_264 = happySpecReduce_0 65# happyReduction_264
-happyReduction_264 = happyIn71
+happyReduce_266 = happySpecReduce_0 67# happyReduction_266
+happyReduction_266 = happyIn73
([]
)
-happyReduce_265 = happySpecReduce_1 65# happyReduction_265
-happyReduction_265 happy_x_1
- = case happyOut72 happy_x_1 of { happy_var_1 ->
- happyIn71
+happyReduce_267 = happySpecReduce_1 67# happyReduction_267
+happyReduction_267 happy_x_1
+ = case happyOut74 happy_x_1 of { happy_var_1 ->
+ happyIn73
(happy_var_1
)}
-happyReduce_266 = happySpecReduce_1 66# happyReduction_266
-happyReduction_266 happy_x_1
- = case happyOut70 happy_x_1 of { happy_var_1 ->
- happyIn72
+happyReduce_268 = happySpecReduce_1 68# happyReduction_268
+happyReduction_268 happy_x_1
+ = case happyOut72 happy_x_1 of { happy_var_1 ->
+ happyIn74
([happy_var_1]
)}
-happyReduce_267 = happySpecReduce_3 66# happyReduction_267
-happyReduction_267 happy_x_3
+happyReduce_269 = happySpecReduce_3 68# happyReduction_269
+happyReduction_269 happy_x_3
happy_x_2
happy_x_1
- = case happyOut70 happy_x_1 of { happy_var_1 ->
- case happyOut72 happy_x_3 of { happy_var_3 ->
- happyIn72
+ = case happyOut72 happy_x_1 of { happy_var_1 ->
+ case happyOut74 happy_x_3 of { happy_var_3 ->
+ happyIn74
(happy_var_1 : happy_var_3
)}}
-happyReduce_268 = happyMonadReduce 3# 67# happyReduction_268
-happyReduction_268 (happy_x_3 `HappyStk`
+happyReduce_270 = happyMonadReduce 3# 69# happyReduction_270
+happyReduction_270 (happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut32 happy_x_1 of { happy_var_1 ->
- case happyOut76 happy_x_2 of { happy_var_2 ->
- case happyOut75 happy_x_3 of { happy_var_3 ->
+ = happyThen (case happyOut33 happy_x_1 of { happy_var_1 ->
+ case happyOut78 happy_x_2 of { happy_var_2 ->
+ case happyOut77 happy_x_3 of { happy_var_3 ->
( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}}
- ) (\r -> happyReturn (happyIn73 r))
+ ) (\r -> happyReturn (happyIn75 r))
-happyReduce_269 = happyReduce 4# 67# happyReduction_269
-happyReduction_269 (happy_x_4 `HappyStk`
+happyReduce_271 = happyReduce 4# 69# happyReduction_271
+happyReduction_271 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) ->
- case happyOut74 happy_x_2 of { happy_var_2 ->
- case happyOut76 happy_x_3 of { happy_var_3 ->
- case happyOut75 happy_x_4 of { happy_var_4 ->
- happyIn73
+ case happyOut76 happy_x_2 of { happy_var_2 ->
+ case happyOut78 happy_x_3 of { happy_var_3 ->
+ case happyOut77 happy_x_4 of { happy_var_4 ->
+ happyIn75
(Ellipsis (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_3 happy_var_4
) `HappyStk` happyRest}}}}
-happyReduce_270 = happySpecReduce_0 68# happyReduction_270
-happyReduction_270 = happyIn74
+happyReduce_272 = happySpecReduce_0 70# happyReduction_272
+happyReduction_272 = happyIn76
([]
)
-happyReduce_271 = happyMonadReduce 3# 68# happyReduction_271
-happyReduction_271 (happy_x_3 `HappyStk`
+happyReduce_273 = happyMonadReduce 3# 70# happyReduction_273
+happyReduction_273 (happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut37 happy_x_2 of { happy_var_2 ->
- case happyOut74 happy_x_3 of { happy_var_3 ->
+ = happyThen (case happyOut38 happy_x_2 of { happy_var_2 ->
+ case happyOut76 happy_x_3 of { happy_var_3 ->
( exprToPattern (RawApp (getRange happy_var_2) happy_var_2) >>= \p ->
return (p : happy_var_3))}}
- ) (\r -> happyReturn (happyIn74 r))
+ ) (\r -> happyReturn (happyIn76 r))
-happyReduce_272 = happySpecReduce_0 69# happyReduction_272
-happyReduction_272 = happyIn75
+happyReduce_274 = happySpecReduce_0 71# happyReduction_274
+happyReduction_274 = happyIn77
([]
)
-happyReduce_273 = happySpecReduce_2 69# happyReduction_273
-happyReduction_273 happy_x_2
+happyReduce_275 = happySpecReduce_2 71# happyReduction_275
+happyReduction_275 happy_x_2
happy_x_1
- = case happyOut31 happy_x_2 of { happy_var_2 ->
- happyIn75
+ = case happyOut32 happy_x_2 of { happy_var_2 ->
+ happyIn77
(case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
)}
-happyReduce_274 = happySpecReduce_0 70# happyReduction_274
-happyReduction_274 = happyIn76
+happyReduce_276 = happySpecReduce_0 72# happyReduction_276
+happyReduction_276 = happyIn78
([]
)
-happyReduce_275 = happySpecReduce_2 70# happyReduction_275
-happyReduction_275 happy_x_2
+happyReduce_277 = happySpecReduce_2 72# happyReduction_277
+happyReduction_277 happy_x_2
happy_x_1
- = case happyOut32 happy_x_2 of { happy_var_2 ->
- happyIn76
+ = case happyOut33 happy_x_2 of { happy_var_2 ->
+ happyIn78
(case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
)}
-happyReduce_276 = happySpecReduce_0 71# happyReduction_276
-happyReduction_276 = happyIn77
+happyReduce_278 = happySpecReduce_0 73# happyReduction_278
+happyReduction_278 = happyIn79
(NoWhere
)
-happyReduce_277 = happySpecReduce_2 71# happyReduction_277
-happyReduction_277 happy_x_2
+happyReduce_279 = happySpecReduce_2 73# happyReduction_279
+happyReduction_279 happy_x_2
happy_x_1
- = case happyOut141 happy_x_2 of { happy_var_2 ->
- happyIn77
+ = case happyOut143 happy_x_2 of { happy_var_2 ->
+ happyIn79
(AnyWhere happy_var_2
)}
-happyReduce_278 = happyReduce 4# 71# happyReduction_278
-happyReduction_278 (happy_x_4 `HappyStk`
+happyReduce_280 = happyReduce 4# 73# happyReduction_280
+happyReduction_280 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut141 happy_x_4 of { happy_var_4 ->
- happyIn77
+ case happyOut143 happy_x_4 of { happy_var_4 ->
+ happyIn79
(SomeWhere happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_279 = happyReduce 4# 71# happyReduction_279
-happyReduction_279 (happy_x_4 `HappyStk`
+happyReduce_281 = happyReduce 4# 73# happyReduction_281
+happyReduction_281 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut112 happy_x_2 of { happy_var_2 ->
- case happyOut141 happy_x_4 of { happy_var_4 ->
- happyIn77
+ = case happyOut114 happy_x_2 of { happy_var_2 ->
+ case happyOut143 happy_x_4 of { happy_var_4 ->
+ happyIn79
(SomeWhere happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_280 = happySpecReduce_1 72# happyReduction_280
-happyReduction_280 happy_x_1
- = case happyOut89 happy_x_1 of { happy_var_1 ->
- happyIn78
- (happy_var_1
- )}
-
-happyReduce_281 = happySpecReduce_1 72# happyReduction_281
-happyReduction_281 happy_x_1
- = case happyOut81 happy_x_1 of { happy_var_1 ->
- happyIn78
- (happy_var_1
- )}
-
-happyReduce_282 = happySpecReduce_1 72# happyReduction_282
+happyReduce_282 = happySpecReduce_1 74# happyReduction_282
happyReduction_282 happy_x_1
- = case happyOut83 happy_x_1 of { happy_var_1 ->
- happyIn78
- ([happy_var_1]
+ = case happyOut91 happy_x_1 of { happy_var_1 ->
+ happyIn80
+ (happy_var_1
)}
-happyReduce_283 = happySpecReduce_1 72# happyReduction_283
+happyReduce_283 = happySpecReduce_1 74# happyReduction_283
happyReduction_283 happy_x_1
- = case happyOut84 happy_x_1 of { happy_var_1 ->
- happyIn78
- ([happy_var_1]
+ = case happyOut83 happy_x_1 of { happy_var_1 ->
+ happyIn80
+ (happy_var_1
)}
-happyReduce_284 = happySpecReduce_1 72# happyReduction_284
+happyReduce_284 = happySpecReduce_1 74# happyReduction_284
happyReduction_284 happy_x_1
= case happyOut85 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn80
([happy_var_1]
)}
-happyReduce_285 = happySpecReduce_1 72# happyReduction_285
+happyReduce_285 = happySpecReduce_1 74# happyReduction_285
happyReduction_285 happy_x_1
= case happyOut86 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn80
([happy_var_1]
)}
-happyReduce_286 = happySpecReduce_1 72# happyReduction_286
+happyReduce_286 = happySpecReduce_1 74# happyReduction_286
happyReduction_286 happy_x_1
- = case happyOut88 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut87 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_287 = happySpecReduce_1 72# happyReduction_287
+happyReduce_287 = happySpecReduce_1 74# happyReduction_287
happyReduction_287 happy_x_1
- = case happyOut90 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut88 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_288 = happySpecReduce_1 72# happyReduction_288
+happyReduce_288 = happySpecReduce_1 74# happyReduction_288
happyReduction_288 happy_x_1
- = case happyOut91 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut90 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_289 = happySpecReduce_1 72# happyReduction_289
+happyReduce_289 = happySpecReduce_1 74# happyReduction_289
happyReduction_289 happy_x_1
= case happyOut92 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn80
([happy_var_1]
)}
-happyReduce_290 = happySpecReduce_1 72# happyReduction_290
+happyReduce_290 = happySpecReduce_1 74# happyReduction_290
happyReduction_290 happy_x_1
= case happyOut93 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn80
([happy_var_1]
)}
-happyReduce_291 = happySpecReduce_1 72# happyReduction_291
+happyReduce_291 = happySpecReduce_1 74# happyReduction_291
happyReduction_291 happy_x_1
= case happyOut94 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn80
([happy_var_1]
)}
-happyReduce_292 = happySpecReduce_1 72# happyReduction_292
+happyReduce_292 = happySpecReduce_1 74# happyReduction_292
happyReduction_292 happy_x_1
= case happyOut95 happy_x_1 of { happy_var_1 ->
- happyIn78
+ happyIn80
([happy_var_1]
)}
-happyReduce_293 = happySpecReduce_1 72# happyReduction_293
+happyReduce_293 = happySpecReduce_1 74# happyReduction_293
happyReduction_293 happy_x_1
- = case happyOut107 happy_x_1 of { happy_var_1 ->
- happyIn78
- (happy_var_1
+ = case happyOut96 happy_x_1 of { happy_var_1 ->
+ happyIn80
+ ([happy_var_1]
)}
-happyReduce_294 = happySpecReduce_1 72# happyReduction_294
+happyReduce_294 = happySpecReduce_1 74# happyReduction_294
happyReduction_294 happy_x_1
- = case happyOut110 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut97 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_295 = happySpecReduce_1 72# happyReduction_295
+happyReduce_295 = happySpecReduce_1 74# happyReduction_295
happyReduction_295 happy_x_1
- = case happyOut111 happy_x_1 of { happy_var_1 ->
- happyIn78
- ([happy_var_1]
+ = case happyOut109 happy_x_1 of { happy_var_1 ->
+ happyIn80
+ (happy_var_1
)}
-happyReduce_296 = happySpecReduce_1 72# happyReduction_296
+happyReduce_296 = happySpecReduce_1 74# happyReduction_296
happyReduction_296 happy_x_1
- = case happyOut114 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut112 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_297 = happySpecReduce_1 72# happyReduction_297
+happyReduce_297 = happySpecReduce_1 74# happyReduction_297
happyReduction_297 happy_x_1
- = case happyOut97 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut113 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_298 = happySpecReduce_1 72# happyReduction_298
+happyReduce_298 = happySpecReduce_1 74# happyReduction_298
happyReduction_298 happy_x_1
- = case happyOut98 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut116 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_299 = happySpecReduce_1 72# happyReduction_299
+happyReduce_299 = happySpecReduce_1 74# happyReduction_299
happyReduction_299 happy_x_1
- = case happyOut96 happy_x_1 of { happy_var_1 ->
- happyIn78
+ = case happyOut99 happy_x_1 of { happy_var_1 ->
+ happyIn80
([happy_var_1]
)}
-happyReduce_300 = happySpecReduce_3 73# happyReduction_300
-happyReduction_300 happy_x_3
+happyReduce_300 = happySpecReduce_1 74# happyReduction_300
+happyReduction_300 happy_x_1
+ = case happyOut100 happy_x_1 of { happy_var_1 ->
+ happyIn80
+ ([happy_var_1]
+ )}
+
+happyReduce_301 = happySpecReduce_1 74# happyReduction_301
+happyReduction_301 happy_x_1
+ = case happyOut98 happy_x_1 of { happy_var_1 ->
+ happyIn80
+ ([happy_var_1]
+ )}
+
+happyReduce_302 = happySpecReduce_3 75# happyReduction_302
+happyReduction_302 happy_x_3
happy_x_2
happy_x_1
= case happyOut16 happy_x_1 of { happy_var_1 ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn79
- (map (flip (TypeSig defaultArgInfo) happy_var_3) happy_var_1
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn81
+ (map (\ x -> TypeSig defaultArgInfo x happy_var_3) happy_var_1
)}}
-happyReduce_301 = happySpecReduce_3 74# happyReduction_301
-happyReduction_301 happy_x_3
+happyReduce_303 = happySpecReduce_3 76# happyReduction_303
+happyReduction_303 happy_x_3
happy_x_2
happy_x_1
= case happyOut20 happy_x_1 of { happy_var_1 ->
- case happyOut31 happy_x_3 of { happy_var_3 ->
- happyIn80
- (map (fmap (flip (TypeSig defaultArgInfo) happy_var_3)) happy_var_1
+ case happyOut32 happy_x_3 of { happy_var_3 ->
+ happyIn82
+ (map (fmap (\ x -> TypeSig defaultArgInfo x happy_var_3)) happy_var_1
)}}
-happyReduce_302 = happyMonadReduce 3# 75# happyReduction_302
-happyReduction_302 (happy_x_3 `HappyStk`
+happyReduce_304 = happyMonadReduce 3# 77# happyReduction_304
+happyReduction_304 (happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut73 happy_x_1 of { happy_var_1 ->
- case happyOut82 happy_x_2 of { happy_var_2 ->
- case happyOut77 happy_x_3 of { happy_var_3 ->
+ = happyThen (case happyOut75 happy_x_1 of { happy_var_1 ->
+ case happyOut84 happy_x_2 of { happy_var_2 ->
+ case happyOut79 happy_x_3 of { happy_var_3 ->
( funClauseOrTypeSigs happy_var_1 happy_var_2 happy_var_3)}}}
- ) (\r -> happyReturn (happyIn81 r))
+ ) (\r -> happyReturn (happyIn83 r))
-happyReduce_303 = happySpecReduce_2 76# happyReduction_303
-happyReduction_303 happy_x_2
+happyReduce_305 = happySpecReduce_2 78# happyReduction_305
+happyReduction_305 happy_x_2
happy_x_1
- = case happyOut31 happy_x_2 of { happy_var_2 ->
- happyIn82
+ = case happyOut32 happy_x_2 of { happy_var_2 ->
+ happyIn84
(JustRHS (RHS happy_var_2)
)}
-happyReduce_304 = happySpecReduce_2 76# happyReduction_304
-happyReduction_304 happy_x_2
+happyReduce_306 = happySpecReduce_2 78# happyReduction_306
+happyReduction_306 happy_x_2
happy_x_1
- = case happyOut31 happy_x_2 of { happy_var_2 ->
- happyIn82
+ = case happyOut32 happy_x_2 of { happy_var_2 ->
+ happyIn84
(TypeSigsRHS happy_var_2
)}
-happyReduce_305 = happySpecReduce_0 76# happyReduction_305
-happyReduction_305 = happyIn82
+happyReduce_307 = happySpecReduce_0 78# happyReduction_307
+happyReduction_307 = happyIn84
(JustRHS AbsurdRHS
)
-happyReduce_306 = happyReduce 7# 77# happyReduction_306
-happyReduction_306 (happy_x_7 `HappyStk`
+happyReduce_308 = happyReduce 7# 79# happyReduction_308
+happyReduction_308 (happy_x_7 `HappyStk`
happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
@@ -3881,17 +3946,17 @@ happyReduction_306 (happy_x_7 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) ->
- case happyOut31 happy_x_5 of { happy_var_5 ->
+ case happyOut32 happy_x_5 of { happy_var_5 ->
case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) ->
- case happyOut137 happy_x_7 of { happy_var_7 ->
- happyIn83
+ case happyOut139 happy_x_7 of { happy_var_7 ->
+ happyIn85
(Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) Inductive happy_var_2 happy_var_3 (Just happy_var_5) happy_var_7
) `HappyStk` happyRest}}}}}}}
-happyReduce_307 = happyReduce 7# 77# happyReduction_307
-happyReduction_307 (happy_x_7 `HappyStk`
+happyReduce_309 = happyReduce 7# 79# happyReduction_309
+happyReduction_309 (happy_x_7 `HappyStk`
happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
@@ -3901,17 +3966,17 @@ happyReduction_307 (happy_x_7 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) ->
- case happyOut31 happy_x_5 of { happy_var_5 ->
+ case happyOut32 happy_x_5 of { happy_var_5 ->
case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) ->
- case happyOut137 happy_x_7 of { happy_var_7 ->
- happyIn83
+ case happyOut139 happy_x_7 of { happy_var_7 ->
+ happyIn85
(Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) CoInductive happy_var_2 happy_var_3 (Just happy_var_5) happy_var_7
) `HappyStk` happyRest}}}}}}}
-happyReduce_308 = happyReduce 5# 77# happyReduction_308
-happyReduction_308 (happy_x_5 `HappyStk`
+happyReduce_310 = happyReduce 5# 79# happyReduction_310
+happyReduction_310 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -3919,15 +3984,15 @@ happyReduction_308 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) ->
- case happyOut137 happy_x_5 of { happy_var_5 ->
- happyIn83
+ case happyOut139 happy_x_5 of { happy_var_5 ->
+ happyIn85
(Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) Inductive happy_var_2 happy_var_3 Nothing happy_var_5
) `HappyStk` happyRest}}}}}
-happyReduce_309 = happyReduce 5# 77# happyReduction_309
-happyReduction_309 (happy_x_5 `HappyStk`
+happyReduce_311 = happyReduce 5# 79# happyReduction_311
+happyReduction_311 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -3935,15 +4000,15 @@ happyReduction_309 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) ->
- case happyOut137 happy_x_5 of { happy_var_5 ->
- happyIn83
+ case happyOut139 happy_x_5 of { happy_var_5 ->
+ happyIn85
(Data (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) CoInductive happy_var_2 happy_var_3 Nothing happy_var_5
) `HappyStk` happyRest}}}}}
-happyReduce_310 = happyReduce 5# 78# happyReduction_310
-happyReduction_310 (happy_x_5 `HappyStk`
+happyReduce_312 = happyReduce 5# 80# happyReduction_312
+happyReduction_312 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -3951,15 +4016,15 @@ happyReduction_310 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) ->
- case happyOut31 happy_x_5 of { happy_var_5 ->
- happyIn84
+ case happyOut32 happy_x_5 of { happy_var_5 ->
+ happyIn86
(DataSig (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) Inductive happy_var_2 happy_var_3 happy_var_5
) `HappyStk` happyRest}}}}}
-happyReduce_311 = happyMonadReduce 7# 79# happyReduction_311
-happyReduction_311 (happy_x_7 `HappyStk`
+happyReduce_313 = happyMonadReduce 7# 81# happyReduction_313
+happyReduction_313 (happy_x_7 `HappyStk`
happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
@@ -3968,181 +4033,181 @@ happyReduction_311 (happy_x_7 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) ->
- case happyOut39 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut40 happy_x_2 of { happy_var_2 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) ->
- case happyOut31 happy_x_5 of { happy_var_5 ->
+ case happyOut32 happy_x_5 of { happy_var_5 ->
case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) ->
- case happyOut138 happy_x_7 of { happy_var_7 ->
+ case happyOut140 happy_x_7 of { happy_var_7 ->
( exprToName happy_var_2 >>= \ n -> return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5,happy_var_6,happy_var_7)) n (fst3 happy_var_7) (snd3 happy_var_7) happy_var_3 (Just happy_var_5) (thd3 happy_var_7))}}}}}}}
- ) (\r -> happyReturn (happyIn85 r))
+ ) (\r -> happyReturn (happyIn87 r))
-happyReduce_312 = happyMonadReduce 5# 79# happyReduction_312
-happyReduction_312 (happy_x_5 `HappyStk`
+happyReduce_314 = happyMonadReduce 5# 81# happyReduction_314
+happyReduction_314 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) ->
- case happyOut39 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut40 happy_x_2 of { happy_var_2 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) ->
- case happyOut138 happy_x_5 of { happy_var_5 ->
+ case happyOut140 happy_x_5 of { happy_var_5 ->
( exprToName happy_var_2 >>= \ n -> return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n (fst3 happy_var_5) (snd3 happy_var_5) happy_var_3 Nothing (thd3 happy_var_5))}}}}}
- ) (\r -> happyReturn (happyIn85 r))
+ ) (\r -> happyReturn (happyIn87 r))
-happyReduce_313 = happyMonadReduce 5# 80# happyReduction_313
-happyReduction_313 (happy_x_5 `HappyStk`
+happyReduce_315 = happyMonadReduce 5# 82# happyReduction_315
+happyReduction_315 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) ->
- case happyOut39 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut40 happy_x_2 of { happy_var_2 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) ->
- case happyOut31 happy_x_5 of { happy_var_5 ->
+ case happyOut32 happy_x_5 of { happy_var_5 ->
( exprToName happy_var_2 >>= \ n -> return $ RecordSig (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n happy_var_3 happy_var_5)}}}}}
- ) (\r -> happyReturn (happyIn86 r))
+ ) (\r -> happyReturn (happyIn88 r))
-happyReduce_314 = happySpecReduce_2 81# happyReduction_314
-happyReduction_314 happy_x_2
+happyReduce_316 = happySpecReduce_2 83# happyReduction_316
+happyReduction_316 happy_x_2
happy_x_1
= case happyOut15 happy_x_2 of { happy_var_2 ->
- happyIn87
+ happyIn89
(happy_var_2
)}
-happyReduce_315 = happySpecReduce_3 82# happyReduction_315
-happyReduction_315 happy_x_3
+happyReduce_317 = happySpecReduce_3 84# happyReduction_317
+happyReduction_317 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) ->
case happyOut14 happy_x_2 of { happy_var_2 ->
case happyOut24 happy_x_3 of { happy_var_3 ->
- happyIn88
- (Infix (NonAssoc (getRange (happy_var_1,happy_var_3)) happy_var_2) happy_var_3
+ happyIn90
+ (Infix (Fixity (getRange (happy_var_1,happy_var_3)) happy_var_2 NonAssoc) happy_var_3
)}}}
-happyReduce_316 = happySpecReduce_3 82# happyReduction_316
-happyReduction_316 happy_x_3
+happyReduce_318 = happySpecReduce_3 84# happyReduction_318
+happyReduction_318 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) ->
case happyOut14 happy_x_2 of { happy_var_2 ->
case happyOut24 happy_x_3 of { happy_var_3 ->
- happyIn88
- (Infix (LeftAssoc (getRange (happy_var_1,happy_var_3)) happy_var_2) happy_var_3
+ happyIn90
+ (Infix (Fixity (getRange (happy_var_1,happy_var_3)) happy_var_2 LeftAssoc) happy_var_3
)}}}
-happyReduce_317 = happySpecReduce_3 82# happyReduction_317
-happyReduction_317 happy_x_3
+happyReduce_319 = happySpecReduce_3 84# happyReduction_319
+happyReduction_319 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) ->
case happyOut14 happy_x_2 of { happy_var_2 ->
case happyOut24 happy_x_3 of { happy_var_3 ->
- happyIn88
- (Infix (RightAssoc (getRange (happy_var_1,happy_var_3)) happy_var_2) happy_var_3
+ happyIn90
+ (Infix (Fixity (getRange (happy_var_1,happy_var_3)) happy_var_2 RightAssoc) happy_var_3
)}}}
-happyReduce_318 = happySpecReduce_2 83# happyReduction_318
-happyReduction_318 happy_x_2
+happyReduce_320 = happySpecReduce_2 85# happyReduction_320
+happyReduction_320 happy_x_2
happy_x_1
- = case happyOut135 happy_x_2 of { happy_var_2 ->
- happyIn89
+ = case happyOut137 happy_x_2 of { happy_var_2 ->
+ happyIn91
(let toField (Common.Arg info (TypeSig _ x t)) = Field x (Common.Arg info t) in map toField happy_var_2
)}
-happyReduce_319 = happySpecReduce_2 84# happyReduction_319
-happyReduction_319 happy_x_2
+happyReduce_321 = happySpecReduce_2 86# happyReduction_321
+happyReduction_321 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) ->
- case happyOut140 happy_x_2 of { happy_var_2 ->
- happyIn90
+ case happyOut142 happy_x_2 of { happy_var_2 ->
+ happyIn92
(Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_320 = happySpecReduce_2 85# happyReduction_320
-happyReduction_320 happy_x_2
+happyReduce_322 = happySpecReduce_2 87# happyReduction_322
+happyReduction_322 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) ->
- case happyOut140 happy_x_2 of { happy_var_2 ->
- happyIn91
+ case happyOut142 happy_x_2 of { happy_var_2 ->
+ happyIn93
(Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_321 = happySpecReduce_2 86# happyReduction_321
-happyReduction_321 happy_x_2
+happyReduce_323 = happySpecReduce_2 88# happyReduction_323
+happyReduction_323 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) ->
- case happyOut140 happy_x_2 of { happy_var_2 ->
- happyIn92
+ case happyOut142 happy_x_2 of { happy_var_2 ->
+ happyIn94
(Private (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_322 = happySpecReduce_2 87# happyReduction_322
-happyReduction_322 happy_x_2
+happyReduce_324 = happySpecReduce_2 89# happyReduction_324
+happyReduction_324 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) ->
- case happyOut140 happy_x_2 of { happy_var_2 ->
- happyIn93
+ case happyOut142 happy_x_2 of { happy_var_2 ->
+ happyIn95
(InstanceB (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_323 = happySpecReduce_2 88# happyReduction_323
-happyReduction_323 happy_x_2
+happyReduce_325 = happySpecReduce_2 90# happyReduction_325
+happyReduction_325 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) ->
- case happyOut140 happy_x_2 of { happy_var_2 ->
- happyIn94
+ case happyOut142 happy_x_2 of { happy_var_2 ->
+ happyIn96
(Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_324 = happySpecReduce_2 89# happyReduction_324
-happyReduction_324 happy_x_2
+happyReduce_326 = happySpecReduce_2 91# happyReduction_326
+happyReduction_326 happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) ->
- case happyOut133 happy_x_2 of { happy_var_2 ->
- happyIn95
+ case happyOut135 happy_x_2 of { happy_var_2 ->
+ happyIn97
(Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2
)}}
-happyReduce_325 = happyReduce 4# 90# happyReduction_325
-happyReduction_325 (happy_x_4 `HappyStk`
+happyReduce_327 = happyReduce 4# 92# happyReduction_327
+happyReduction_327 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut31 happy_x_4 of { happy_var_4 ->
- happyIn96
+ case happyOut32 happy_x_4 of { happy_var_4 ->
+ happyIn98
(UnquoteDecl (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4
) `HappyStk` happyRest}}}
-happyReduce_326 = happyMonadReduce 5# 91# happyReduction_326
-happyReduction_326 (happy_x_5 `HappyStk`
+happyReduce_328 = happyMonadReduce 5# 93# happyReduction_328
+happyReduction_328 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
= happyThen (case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut101 happy_x_3 of { happy_var_3 ->
- case happyOut100 happy_x_5 of { happy_var_5 ->
+ case happyOut103 happy_x_3 of { happy_var_3 ->
+ case happyOut102 happy_x_5 of { happy_var_5 ->
(
case happy_var_2 of
Name _ [_] -> case mkNotation happy_var_3 (map rangedThing happy_var_5) of
Left err -> parseError $ "Malformed syntax declaration: " ++ err
Right n -> return $ Syntax happy_var_2 n
_ -> parseError "Syntax declarations are allowed only for simple names (without holes)")}}}
- ) (\r -> happyReturn (happyIn97 r))
+ ) (\r -> happyReturn (happyIn99 r))
-happyReduce_327 = happyMonadReduce 5# 92# happyReduction_327
-happyReduction_327 (happy_x_5 `HappyStk`
+happyReduce_329 = happyMonadReduce 5# 94# happyReduction_329
+happyReduction_329 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4150,180 +4215,180 @@ happyReduction_327 (happy_x_5 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) ->
case happyOut15 happy_x_2 of { happy_var_2 ->
- case happyOut99 happy_x_3 of { happy_var_3 ->
+ case happyOut101 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymEqual happy_var_4) ->
- case happyOut31 happy_x_5 of { happy_var_5 ->
+ case happyOut32 happy_x_5 of { happy_var_5 ->
( do
p <- exprToPattern happy_var_5
return (PatternSyn (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 happy_var_3 p))}}}}}
- ) (\r -> happyReturn (happyIn98 r))
+ ) (\r -> happyReturn (happyIn100 r))
-happyReduce_328 = happySpecReduce_0 93# happyReduction_328
-happyReduction_328 = happyIn99
+happyReduce_330 = happySpecReduce_0 95# happyReduction_330
+happyReduction_330 = happyIn101
([]
)
-happyReduce_329 = happyMonadReduce 1# 93# happyReduction_329
-happyReduction_329 (happy_x_1 `HappyStk`
+happyReduce_331 = happyMonadReduce 1# 95# happyReduction_331
+happyReduction_331 (happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut51 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut53 happy_x_1 of { happy_var_1 ->
( patternSynArgs happy_var_1)}
- ) (\r -> happyReturn (happyIn99 r))
+ ) (\r -> happyReturn (happyIn101 r))
-happyReduce_330 = happySpecReduce_1 94# happyReduction_330
-happyReduction_330 happy_x_1
- = case happyOut105 happy_x_1 of { happy_var_1 ->
- happyIn100
+happyReduce_332 = happySpecReduce_1 96# happyReduction_332
+happyReduction_332 happy_x_1
+ = case happyOut107 happy_x_1 of { happy_var_1 ->
+ happyIn102
([happy_var_1]
)}
-happyReduce_331 = happySpecReduce_2 94# happyReduction_331
-happyReduction_331 happy_x_2
+happyReduce_333 = happySpecReduce_2 96# happyReduction_333
+happyReduction_333 happy_x_2
happy_x_1
- = case happyOut100 happy_x_1 of { happy_var_1 ->
- case happyOut105 happy_x_2 of { happy_var_2 ->
- happyIn100
+ = case happyOut102 happy_x_1 of { happy_var_1 ->
+ case happyOut107 happy_x_2 of { happy_var_2 ->
+ happyIn102
(happy_var_1 ++ [happy_var_2]
)}}
-happyReduce_332 = happySpecReduce_1 95# happyReduction_332
-happyReduction_332 happy_x_1
- = case happyOut102 happy_x_1 of { happy_var_1 ->
- happyIn101
+happyReduce_334 = happySpecReduce_1 97# happyReduction_334
+happyReduction_334 happy_x_1
+ = case happyOut104 happy_x_1 of { happy_var_1 ->
+ happyIn103
([happy_var_1]
)}
-happyReduce_333 = happySpecReduce_2 95# happyReduction_333
-happyReduction_333 happy_x_2
+happyReduce_335 = happySpecReduce_2 97# happyReduction_335
+happyReduction_335 happy_x_2
happy_x_1
- = case happyOut101 happy_x_1 of { happy_var_1 ->
- case happyOut102 happy_x_2 of { happy_var_2 ->
- happyIn101
+ = case happyOut103 happy_x_1 of { happy_var_1 ->
+ case happyOut104 happy_x_2 of { happy_var_2 ->
+ happyIn103
(happy_var_1 ++ [happy_var_2]
)}}
-happyReduce_334 = happySpecReduce_1 96# happyReduction_334
-happyReduction_334 happy_x_1
- = case happyOut103 happy_x_1 of { happy_var_1 ->
- happyIn102
+happyReduce_336 = happySpecReduce_1 98# happyReduction_336
+happyReduction_336 happy_x_1
+ = case happyOut105 happy_x_1 of { happy_var_1 ->
+ happyIn104
(defaultNamedArg happy_var_1
)}
-happyReduce_335 = happySpecReduce_3 96# happyReduction_335
-happyReduction_335 happy_x_3
+happyReduce_337 = happySpecReduce_3 98# happyReduction_337
+happyReduction_337 happy_x_3
happy_x_2
happy_x_1
- = case happyOut104 happy_x_2 of { happy_var_2 ->
- happyIn102
+ = case happyOut106 happy_x_2 of { happy_var_2 ->
+ happyIn104
(setHiding Hidden $ defaultNamedArg happy_var_2
)}
-happyReduce_336 = happySpecReduce_3 96# happyReduction_336
-happyReduction_336 happy_x_3
+happyReduce_338 = happySpecReduce_3 98# happyReduction_338
+happyReduction_338 happy_x_3
happy_x_2
happy_x_1
- = case happyOut104 happy_x_2 of { happy_var_2 ->
- happyIn102
+ = case happyOut106 happy_x_2 of { happy_var_2 ->
+ happyIn104
(setHiding Instance $ defaultNamedArg happy_var_2
)}
-happyReduce_337 = happyReduce 5# 96# happyReduction_337
-happyReduction_337 (happy_x_5 `HappyStk`
+happyReduce_339 = happyReduce 5# 98# happyReduction_339
+happyReduction_339 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut105 happy_x_2 of { happy_var_2 ->
- case happyOut104 happy_x_4 of { happy_var_4 ->
- happyIn102
+ = case happyOut107 happy_x_2 of { happy_var_2 ->
+ case happyOut106 happy_x_4 of { happy_var_4 ->
+ happyIn104
(setHiding Hidden $ defaultArg $ named happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_338 = happyReduce 5# 96# happyReduction_338
-happyReduction_338 (happy_x_5 `HappyStk`
+happyReduce_340 = happyReduce 5# 98# happyReduction_340
+happyReduction_340 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut105 happy_x_2 of { happy_var_2 ->
- case happyOut104 happy_x_4 of { happy_var_4 ->
- happyIn102
+ = case happyOut107 happy_x_2 of { happy_var_2 ->
+ case happyOut106 happy_x_4 of { happy_var_4 ->
+ happyIn104
(setHiding Instance $ defaultArg $ named happy_var_2 happy_var_4
) `HappyStk` happyRest}}
-happyReduce_339 = happySpecReduce_1 97# happyReduction_339
-happyReduction_339 happy_x_1
- = case happyOut105 happy_x_1 of { happy_var_1 ->
- happyIn103
+happyReduce_341 = happySpecReduce_1 99# happyReduction_341
+happyReduction_341 happy_x_1
+ = case happyOut107 happy_x_1 of { happy_var_1 ->
+ happyIn105
(ExprHole (rangedThing happy_var_1)
)}
-happyReduce_340 = happyReduce 6# 97# happyReduction_340
-happyReduction_340 (happy_x_6 `HappyStk`
+happyReduce_342 = happyReduce 6# 99# happyReduction_342
+happyReduction_342 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut105 happy_x_3 of { happy_var_3 ->
- case happyOut105 happy_x_5 of { happy_var_5 ->
- happyIn103
+ = case happyOut107 happy_x_3 of { happy_var_3 ->
+ case happyOut107 happy_x_5 of { happy_var_5 ->
+ happyIn105
(LambdaHole (rangedThing happy_var_3) (rangedThing happy_var_5)
) `HappyStk` happyRest}}
-happyReduce_341 = happySpecReduce_1 98# happyReduction_341
-happyReduction_341 happy_x_1
- = case happyOut105 happy_x_1 of { happy_var_1 ->
- happyIn104
+happyReduce_343 = happySpecReduce_1 100# happyReduction_343
+happyReduction_343 happy_x_1
+ = case happyOut107 happy_x_1 of { happy_var_1 ->
+ happyIn106
(ExprHole (rangedThing happy_var_1)
)}
-happyReduce_342 = happyReduce 4# 98# happyReduction_342
-happyReduction_342 (happy_x_4 `HappyStk`
+happyReduce_344 = happyReduce 4# 100# happyReduction_344
+happyReduction_344 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut105 happy_x_2 of { happy_var_2 ->
- case happyOut105 happy_x_4 of { happy_var_4 ->
- happyIn104
+ = case happyOut107 happy_x_2 of { happy_var_2 ->
+ case happyOut107 happy_x_4 of { happy_var_4 ->
+ happyIn106
(LambdaHole (rangedThing happy_var_2) (rangedThing happy_var_4)
) `HappyStk` happyRest}}
-happyReduce_343 = happySpecReduce_1 99# happyReduction_343
-happyReduction_343 happy_x_1
+happyReduce_345 = happySpecReduce_1 101# happyReduction_345
+happyReduction_345 happy_x_1
= case happyOutTok happy_x_1 of { (TokId happy_var_1) ->
- happyIn105
+ happyIn107
(Ranged (getRange $ fst happy_var_1) (stringToRawName $ snd happy_var_1)
)}
-happyReduce_344 = happySpecReduce_1 100# happyReduction_344
-happyReduction_344 happy_x_1
+happyReduce_346 = happySpecReduce_1 102# happyReduction_346
+happyReduction_346 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) ->
- happyIn106
+ happyIn108
(Just (getRange happy_var_1)
)}
-happyReduce_345 = happySpecReduce_0 100# happyReduction_345
-happyReduction_345 = happyIn106
+happyReduce_347 = happySpecReduce_0 102# happyReduction_347
+happyReduction_347 = happyIn108
(Nothing
)
-happyReduce_346 = happyMonadReduce 5# 101# happyReduction_346
-happyReduction_346 (happy_x_5 `HappyStk`
+happyReduce_348 = happyMonadReduce 5# 103# happyReduction_348
+happyReduction_348 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest) tk
- = happyThen (case happyOut106 happy_x_1 of { happy_var_1 ->
+ = happyThen (case happyOut108 happy_x_1 of { happy_var_1 ->
case happyOutTok happy_x_2 of { (TokKeyword KwImport happy_var_2) ->
case happyOut22 happy_x_3 of { happy_var_3 ->
- case happyOut108 happy_x_4 of { happy_var_4 ->
- case happyOut62 happy_x_5 of { happy_var_5 ->
+ case happyOut110 happy_x_4 of { happy_var_4 ->
+ case happyOut64 happy_x_5 of { happy_var_5 ->
(
let
{ doOpen = maybe DontOpen (const DoOpen) happy_var_1
@@ -4369,18 +4434,18 @@ happyReduction_346 (happy_x_5 `HappyStk`
, appStm (noName $ beginningOf $ getRange m) es
]
})}}}}}
- ) (\r -> happyReturn (happyIn107 r))
+ ) (\r -> happyReturn (happyIn109 r))
-happyReduce_347 = happyReduce 4# 101# happyReduction_347
-happyReduction_347 (happy_x_4 `HappyStk`
+happyReduce_349 = happyReduce 4# 103# happyReduction_349
+happyReduction_349 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut22 happy_x_2 of { happy_var_2 ->
- case happyOut108 happy_x_3 of { happy_var_3 ->
- case happyOut62 happy_x_4 of { happy_var_4 ->
- happyIn107
+ case happyOut110 happy_x_3 of { happy_var_3 ->
+ case happyOut64 happy_x_4 of { happy_var_4 ->
+ happyIn109
(let
{ m = happy_var_2
; es = happy_var_3
@@ -4397,8 +4462,8 @@ happyReduction_347 (happy_x_4 `HappyStk`
]
) `HappyStk` happyRest}}}
-happyReduce_348 = happyReduce 6# 101# happyReduction_348
-happyReduction_348 (happy_x_6 `HappyStk`
+happyReduce_350 = happyReduce 6# 103# happyReduction_350
+happyReduction_350 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -4406,8 +4471,8 @@ happyReduction_348 (happy_x_6 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOut22 happy_x_2 of { happy_var_2 ->
- case happyOut62 happy_x_6 of { happy_var_6 ->
- happyIn107
+ case happyOut64 happy_x_6 of { happy_var_6 ->
+ happyIn109
(let r = getRange happy_var_2 in
[ Private r [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2)
(RecordModuleIFS r happy_var_2) DoOpen happy_var_6
@@ -4415,22 +4480,22 @@ happyReduction_348 (happy_x_6 `HappyStk`
]
) `HappyStk` happyRest}}
-happyReduce_349 = happySpecReduce_0 102# happyReduction_349
-happyReduction_349 = happyIn108
+happyReduce_351 = happySpecReduce_0 104# happyReduction_351
+happyReduction_351 = happyIn110
([]
)
-happyReduce_350 = happySpecReduce_2 102# happyReduction_350
-happyReduction_350 happy_x_2
+happyReduce_352 = happySpecReduce_2 104# happyReduction_352
+happyReduction_352 happy_x_2
happy_x_1
- = case happyOut40 happy_x_1 of { happy_var_1 ->
- case happyOut108 happy_x_2 of { happy_var_2 ->
- happyIn108
+ = case happyOut41 happy_x_1 of { happy_var_1 ->
+ case happyOut110 happy_x_2 of { happy_var_2 ->
+ happyIn110
(happy_var_1 : happy_var_2
)}}
-happyReduce_351 = happyReduce 4# 103# happyReduction_351
-happyReduction_351 (happy_x_4 `HappyStk`
+happyReduce_353 = happyReduce 4# 105# happyReduction_353
+happyReduction_353 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -4439,23 +4504,23 @@ happyReduction_351 (happy_x_4 `HappyStk`
case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) ->
case happyOutTok happy_x_3 of { (TokSymbol SymEllipsis happy_var_3) ->
case happyOut17 happy_x_4 of { happy_var_4 ->
- happyIn109
+ happyIn111
((\ts ->
if null ts then return $ RecordModuleIFS (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_1
else parseError "No bindings allowed for record module with non-canonical implicits" )
) `HappyStk` happyRest}}}}
-happyReduce_352 = happySpecReduce_2 103# happyReduction_352
-happyReduction_352 happy_x_2
+happyReduce_354 = happySpecReduce_2 105# happyReduction_354
+happyReduction_354 happy_x_2
happy_x_1
= case happyOut22 happy_x_1 of { happy_var_1 ->
- case happyOut108 happy_x_2 of { happy_var_2 ->
- happyIn109
+ case happyOut110 happy_x_2 of { happy_var_2 ->
+ happyIn111
((\ts -> return $ SectionApp (getRange (happy_var_1, happy_var_2)) ts (RawApp (fuseRange happy_var_1 happy_var_2) (Ident happy_var_1 : happy_var_2)) )
)}}
-happyReduce_353 = happyMonadReduce 6# 104# happyReduction_353
-happyReduction_353 (happy_x_6 `HappyStk`
+happyReduce_355 = happyMonadReduce 6# 106# happyReduction_355
+happyReduction_355 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -4464,16 +4529,16 @@ happyReduction_353 (happy_x_6 `HappyStk`
happyRest) tk
= happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) ->
case happyOut22 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
- case happyOut109 happy_x_5 of { happy_var_5 ->
- case happyOut62 happy_x_6 of { happy_var_6 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
+ case happyOut111 happy_x_5 of { happy_var_5 ->
+ case happyOut64 happy_x_6 of { happy_var_6 ->
( do { ma <- happy_var_5 (map addType happy_var_3)
; name <- ensureUnqual happy_var_2
; return $ ModuleMacro (getRange (happy_var_1, happy_var_2, ma, happy_var_6)) name ma DontOpen happy_var_6 })}}}}}
- ) (\r -> happyReturn (happyIn110 r))
+ ) (\r -> happyReturn (happyIn112 r))
-happyReduce_354 = happyMonadReduce 7# 104# happyReduction_354
-happyReduction_354 (happy_x_7 `HappyStk`
+happyReduce_356 = happyMonadReduce 7# 106# happyReduction_356
+happyReduction_356 (happy_x_7 `HappyStk`
happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
@@ -4484,14 +4549,14 @@ happyReduction_354 (happy_x_7 `HappyStk`
= happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwModule happy_var_2) ->
case happyOut15 happy_x_3 of { happy_var_3 ->
- case happyOut59 happy_x_4 of { happy_var_4 ->
- case happyOut109 happy_x_6 of { happy_var_6 ->
- case happyOut62 happy_x_7 of { happy_var_7 ->
+ case happyOut61 happy_x_4 of { happy_var_4 ->
+ case happyOut111 happy_x_6 of { happy_var_6 ->
+ case happyOut64 happy_x_7 of { happy_var_7 ->
( do {ma <- happy_var_6 (map addType happy_var_4); return $ ModuleMacro (getRange (happy_var_1, happy_var_2, happy_var_3, ma, happy_var_7)) happy_var_3 ma DoOpen happy_var_7 })}}}}}}
- ) (\r -> happyReturn (happyIn110 r))
+ ) (\r -> happyReturn (happyIn112 r))
-happyReduce_355 = happyReduce 5# 105# happyReduction_355
-happyReduction_355 (happy_x_5 `HappyStk`
+happyReduce_357 = happyReduce 5# 107# happyReduction_357
+happyReduction_357 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4499,185 +4564,185 @@ happyReduction_355 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) ->
case happyOut22 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) ->
- case happyOut141 happy_x_5 of { happy_var_5 ->
- happyIn111
+ case happyOut143 happy_x_5 of { happy_var_5 ->
+ happyIn113
(Module (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) happy_var_2 (map addType happy_var_3) happy_var_5
) `HappyStk` happyRest}}}}}
-happyReduce_356 = happyReduce 5# 105# happyReduction_356
-happyReduction_356 (happy_x_5 `HappyStk`
+happyReduce_358 = happyReduce 5# 107# happyReduction_358
+happyReduction_358 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) ->
- case happyOut112 happy_x_2 of { happy_var_2 ->
- case happyOut59 happy_x_3 of { happy_var_3 ->
+ case happyOut114 happy_x_2 of { happy_var_2 ->
+ case happyOut61 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) ->
- case happyOut141 happy_x_5 of { happy_var_5 ->
- happyIn111
+ case happyOut143 happy_x_5 of { happy_var_5 ->
+ happyIn113
(Module (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) (QName happy_var_2) (map addType happy_var_3) happy_var_5
) `HappyStk` happyRest}}}}}
-happyReduce_357 = happySpecReduce_1 106# happyReduction_357
-happyReduction_357 happy_x_1
- = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) ->
- happyIn112
- (noName (getRange happy_var_1)
- )}
-
-happyReduce_358 = happySpecReduce_1 107# happyReduction_358
-happyReduction_358 happy_x_1
- = case happyOut143 happy_x_1 of { happy_var_1 ->
- happyIn113
- (figureOutTopLevelModule happy_var_1
- )}
-
happyReduce_359 = happySpecReduce_1 108# happyReduction_359
happyReduction_359 happy_x_1
- = case happyOut115 happy_x_1 of { happy_var_1 ->
+ = case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) ->
happyIn114
- (Pragma happy_var_1
+ (noName (getRange happy_var_1)
)}
happyReduce_360 = happySpecReduce_1 109# happyReduction_360
happyReduction_360 happy_x_1
- = case happyOut117 happy_x_1 of { happy_var_1 ->
+ = case happyOut145 happy_x_1 of { happy_var_1 ->
happyIn115
- (happy_var_1
+ (figureOutTopLevelModule happy_var_1
)}
-happyReduce_361 = happySpecReduce_1 109# happyReduction_361
+happyReduce_361 = happySpecReduce_1 110# happyReduction_361
happyReduction_361 happy_x_1
- = case happyOut118 happy_x_1 of { happy_var_1 ->
- happyIn115
- (happy_var_1
+ = case happyOut117 happy_x_1 of { happy_var_1 ->
+ happyIn116
+ (Pragma happy_var_1
)}
-happyReduce_362 = happySpecReduce_1 109# happyReduction_362
+happyReduce_362 = happySpecReduce_1 111# happyReduction_362
happyReduction_362 happy_x_1
= case happyOut119 happy_x_1 of { happy_var_1 ->
- happyIn115
+ happyIn117
(happy_var_1
)}
-happyReduce_363 = happySpecReduce_1 109# happyReduction_363
+happyReduce_363 = happySpecReduce_1 111# happyReduction_363
happyReduction_363 happy_x_1
= case happyOut120 happy_x_1 of { happy_var_1 ->
- happyIn115
+ happyIn117
(happy_var_1
)}
-happyReduce_364 = happySpecReduce_1 109# happyReduction_364
+happyReduce_364 = happySpecReduce_1 111# happyReduction_364
happyReduction_364 happy_x_1
- = case happyOut122 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut121 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_365 = happySpecReduce_1 109# happyReduction_365
+happyReduce_365 = happySpecReduce_1 111# happyReduction_365
happyReduction_365 happy_x_1
- = case happyOut121 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut122 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_366 = happySpecReduce_1 109# happyReduction_366
+happyReduce_366 = happySpecReduce_1 111# happyReduction_366
happyReduction_366 happy_x_1
- = case happyOut123 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut124 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_367 = happySpecReduce_1 109# happyReduction_367
+happyReduce_367 = happySpecReduce_1 111# happyReduction_367
happyReduction_367 happy_x_1
- = case happyOut124 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut123 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_368 = happySpecReduce_1 109# happyReduction_368
+happyReduce_368 = happySpecReduce_1 111# happyReduction_368
happyReduction_368 happy_x_1
= case happyOut125 happy_x_1 of { happy_var_1 ->
- happyIn115
+ happyIn117
(happy_var_1
)}
-happyReduce_369 = happySpecReduce_1 109# happyReduction_369
+happyReduce_369 = happySpecReduce_1 111# happyReduction_369
happyReduction_369 happy_x_1
- = case happyOut131 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut126 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_370 = happySpecReduce_1 109# happyReduction_370
+happyReduce_370 = happySpecReduce_1 111# happyReduction_370
happyReduction_370 happy_x_1
- = case happyOut132 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut127 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_371 = happySpecReduce_1 109# happyReduction_371
+happyReduce_371 = happySpecReduce_1 111# happyReduction_371
happyReduction_371 happy_x_1
- = case happyOut126 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut133 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_372 = happySpecReduce_1 109# happyReduction_372
+happyReduce_372 = happySpecReduce_1 111# happyReduction_372
happyReduction_372 happy_x_1
- = case happyOut129 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut134 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_373 = happySpecReduce_1 109# happyReduction_373
+happyReduce_373 = happySpecReduce_1 111# happyReduction_373
happyReduction_373 happy_x_1
= case happyOut128 happy_x_1 of { happy_var_1 ->
- happyIn115
+ happyIn117
(happy_var_1
)}
-happyReduce_374 = happySpecReduce_1 109# happyReduction_374
+happyReduce_374 = happySpecReduce_1 111# happyReduction_374
happyReduction_374 happy_x_1
- = case happyOut127 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut131 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_375 = happySpecReduce_1 109# happyReduction_375
+happyReduce_375 = happySpecReduce_1 111# happyReduction_375
happyReduction_375 happy_x_1
= case happyOut130 happy_x_1 of { happy_var_1 ->
- happyIn115
+ happyIn117
(happy_var_1
)}
-happyReduce_376 = happySpecReduce_1 109# happyReduction_376
+happyReduce_376 = happySpecReduce_1 111# happyReduction_376
happyReduction_376 happy_x_1
- = case happyOut116 happy_x_1 of { happy_var_1 ->
- happyIn115
+ = case happyOut129 happy_x_1 of { happy_var_1 ->
+ happyIn117
(happy_var_1
)}
-happyReduce_377 = happyReduce 4# 110# happyReduction_377
-happyReduction_377 (happy_x_4 `HappyStk`
+happyReduce_377 = happySpecReduce_1 111# happyReduction_377
+happyReduction_377 happy_x_1
+ = case happyOut132 happy_x_1 of { happy_var_1 ->
+ happyIn117
+ (happy_var_1
+ )}
+
+happyReduce_378 = happySpecReduce_1 111# happyReduction_378
+happyReduction_378 happy_x_1
+ = case happyOut118 happy_x_1 of { happy_var_1 ->
+ happyIn117
+ (happy_var_1
+ )}
+
+happyReduce_379 = happyReduce 4# 112# happyReduction_379
+happyReduction_379 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwOPTIONS happy_var_2) ->
- case happyOut27 happy_x_3 of { happy_var_3 ->
+ case happyOut28 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) ->
- happyIn116
+ happyIn118
(OptionsPragma (getRange (happy_var_1,happy_var_2,happy_var_4)) happy_var_3
) `HappyStk` happyRest}}}}
-happyReduce_378 = happyReduce 5# 111# happyReduction_378
-happyReduction_378 (happy_x_5 `HappyStk`
+happyReduce_380 = happyReduce 5# 113# happyReduction_380
+happyReduction_380 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4686,14 +4751,14 @@ happyReduction_378 (happy_x_5 `HappyStk`
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwBUILTIN happy_var_2) ->
case happyOutTok happy_x_3 of { (TokString happy_var_3) ->
- case happyOut30 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn117
+ happyIn119
(BuiltinPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4,happy_var_5)) (snd happy_var_3) (Ident happy_var_4)
) `HappyStk` happyRest}}}}}
-happyReduce_379 = happyReduce 5# 111# happyReduction_379
-happyReduction_379 (happy_x_5 `HappyStk`
+happyReduce_381 = happyReduce 5# 113# happyReduction_381
+happyReduction_381 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4702,28 +4767,28 @@ happyReduction_379 (happy_x_5 `HappyStk`
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwBUILTIN happy_var_2) ->
case happyOutTok happy_x_3 of { (TokKeyword KwREWRITE happy_var_3) ->
- case happyOut30 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn117
+ happyIn119
(BuiltinPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) "REWRITE" (Ident happy_var_4)
) `HappyStk` happyRest}}}}}
-happyReduce_380 = happyReduce 4# 112# happyReduction_380
-happyReduction_380 (happy_x_4 `HappyStk`
+happyReduce_382 = happyReduce 4# 114# happyReduction_382
+happyReduction_382 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwREWRITE happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) ->
- happyIn118
+ happyIn120
(RewritePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
) `HappyStk` happyRest}}}}
-happyReduce_381 = happyReduce 5# 113# happyReduction_381
-happyReduction_381 (happy_x_5 `HappyStk`
+happyReduce_383 = happyReduce 5# 115# happyReduction_383
+happyReduction_383 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4731,15 +4796,15 @@ happyReduction_381 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
- case happyOut27 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
+ case happyOut28 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn119
+ happyIn121
(CompiledPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
) `HappyStk` happyRest}}}}}
-happyReduce_382 = happyReduce 5# 114# happyReduction_382
-happyReduction_382 (happy_x_5 `HappyStk`
+happyReduce_384 = happyReduce 5# 116# happyReduction_384
+happyReduction_384 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4747,15 +4812,15 @@ happyReduction_382 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EXPORT happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
- case happyOut28 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
+ case happyOut29 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn120
+ happyIn122
(CompiledExportPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 happy_var_4
) `HappyStk` happyRest}}}}}
-happyReduce_383 = happyReduce 5# 115# happyReduction_383
-happyReduction_383 (happy_x_5 `HappyStk`
+happyReduce_385 = happyReduce 5# 117# happyReduction_385
+happyReduction_385 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4763,15 +4828,15 @@ happyReduction_383 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_TYPE happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
- case happyOut27 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
+ case happyOut28 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn121
+ happyIn123
(CompiledTypePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
) `HappyStk` happyRest}}}}}
-happyReduce_384 = happyReduce 6# 116# happyReduction_384
-happyReduction_384 (happy_x_6 `HappyStk`
+happyReduce_386 = happyReduce 6# 118# happyReduction_386
+happyReduction_386 (happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
@@ -4780,16 +4845,16 @@ happyReduction_384 (happy_x_6 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokString happy_var_4) ->
- case happyOut27 happy_x_5 of { happy_var_5 ->
+ case happyOut28 happy_x_5 of { happy_var_5 ->
case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) ->
- happyIn122
+ happyIn124
(CompiledDataPragma (getRange (happy_var_1,happy_var_2,happy_var_3,fst happy_var_4,happy_var_6)) happy_var_3 (snd happy_var_4) happy_var_5
) `HappyStk` happyRest}}}}}}
-happyReduce_385 = happyReduce 5# 117# happyReduction_385
-happyReduction_385 (happy_x_5 `HappyStk`
+happyReduce_387 = happyReduce 5# 119# happyReduction_387
+happyReduction_387 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4797,15 +4862,15 @@ happyReduction_385 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EPIC happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
- case happyOut27 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
+ case happyOut28 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn123
+ happyIn125
(CompiledEpicPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
) `HappyStk` happyRest}}}}}
-happyReduce_386 = happyReduce 5# 118# happyReduction_386
-happyReduction_386 (happy_x_5 `HappyStk`
+happyReduce_388 = happyReduce 5# 120# happyReduction_388
+happyReduction_388 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
@@ -4813,91 +4878,91 @@ happyReduction_386 (happy_x_5 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_JS happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
- case happyOut27 happy_x_4 of { happy_var_4 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
+ case happyOut28 happy_x_4 of { happy_var_4 ->
case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) ->
- happyIn124
+ happyIn126
(CompiledJSPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
) `HappyStk` happyRest}}}}}
-happyReduce_387 = happyReduce 4# 119# happyReduction_387
-happyReduction_387 (happy_x_4 `HappyStk`
+happyReduce_389 = happyReduce 4# 121# happyReduction_389
+happyReduction_389 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwSTATIC happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) ->
- happyIn125
+ happyIn127
(StaticPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
) `HappyStk` happyRest}}}}
-happyReduce_388 = happyReduce 4# 120# happyReduction_388
-happyReduction_388 (happy_x_4 `HappyStk`
+happyReduce_390 = happyReduce 4# 122# happyReduction_390
+happyReduction_390 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwETA happy_var_2) ->
- case happyOut30 happy_x_3 of { happy_var_3 ->
+ case happyOut31 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) ->
- happyIn126
+ happyIn128
(EtaPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
) `HappyStk` happyRest}}}}
-happyReduce_389 = happySpecReduce_3 121# happyReduction_389
-happyReduction_389 happy_x_3
+happyReduce_391 = happySpecReduce_3 123# happyReduction_391
+happyReduction_391 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_2) ->
case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) ->
- happyIn127
+ happyIn129
(TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NoTerminationCheck
)}}}
-happyReduce_390 = happySpecReduce_3 122# happyReduction_390
-happyReduction_390 happy_x_3
+happyReduce_392 = happySpecReduce_3 124# happyReduction_392
+happyReduction_392 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwNON_TERMINATING happy_var_2) ->
case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) ->
- happyIn128
+ happyIn130
(TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NonTerminating
)}}}
-happyReduce_391 = happySpecReduce_3 123# happyReduction_391
-happyReduction_391 happy_x_3
+happyReduce_393 = happySpecReduce_3 125# happyReduction_393
+happyReduction_393 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwTERMINATING happy_var_2) ->
case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) ->
- happyIn129
+ happyIn131
(TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) Terminating
)}}}
-happyReduce_392 = happyReduce 4# 124# happyReduction_392
-happyReduction_392 (happy_x_4 `HappyStk`
+happyReduce_394 = happyReduce 4# 126# happyReduction_394
+happyReduction_394 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwMEASURE happy_var_2) ->
- case happyOut29 happy_x_3 of { happy_var_3 ->
+ case happyOut30 happy_x_3 of { happy_var_3 ->
case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) ->
- happyIn130
+ happyIn132
(let r = getRange (happy_var_1, happy_var_2, happy_var_3, happy_var_4) in
TerminationCheckPragma r (TerminationMeasure r happy_var_3)
) `HappyStk` happyRest}}}}
-happyReduce_393 = happyMonadReduce 4# 125# happyReduction_393
-happyReduction_393 (happy_x_4 `HappyStk`
+happyReduce_395 = happyMonadReduce 4# 127# happyReduction_395
+happyReduction_395 (happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
@@ -4910,147 +4975,147 @@ happyReduction_393 (happy_x_4 `HappyStk`
if validHaskellModuleName s
then return $ ImportPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4)) s
else parseError $ "Malformed module name: " ++ s ++ ".")}}}}
- ) (\r -> happyReturn (happyIn131 r))
+ ) (\r -> happyReturn (happyIn133 r))
-happyReduce_394 = happySpecReduce_3 126# happyReduction_394
-happyReduction_394 happy_x_3
+happyReduce_396 = happySpecReduce_3 128# happyReduction_396
+happyReduction_396 happy_x_3
happy_x_2
happy_x_1
= case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) ->
case happyOutTok happy_x_2 of { (TokKeyword KwIMPOSSIBLE happy_var_2) ->
case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) ->
- happyIn132
+ happyIn134
(ImpossiblePragma (getRange (happy_var_1,happy_var_2,happy_var_3))
)}}}
-happyReduce_395 = happySpecReduce_3 127# happyReduction_395
-happyReduction_395 happy_x_3
+happyReduce_397 = happySpecReduce_3 129# happyReduction_397
+happyReduction_397 happy_x_3
happy_x_2
happy_x_1
- = case happyOut134 happy_x_2 of { happy_var_2 ->
- happyIn133
+ = case happyOut136 happy_x_2 of { happy_var_2 ->
+ happyIn135
(reverse happy_var_2
)}
-happyReduce_396 = happySpecReduce_3 128# happyReduction_396
-happyReduction_396 happy_x_3
+happyReduce_398 = happySpecReduce_3 130# happyReduction_398
+happyReduction_398 happy_x_3
happy_x_2
happy_x_1
- = case happyOut134 happy_x_1 of { happy_var_1 ->
- case happyOut79 happy_x_3 of { happy_var_3 ->
- happyIn134
+ = case happyOut136 happy_x_1 of { happy_var_1 ->
+ case happyOut81 happy_x_3 of { happy_var_3 ->
+ happyIn136
(reverse happy_var_3 ++ happy_var_1
)}}
-happyReduce_397 = happySpecReduce_1 128# happyReduction_397
-happyReduction_397 happy_x_1
- = case happyOut79 happy_x_1 of { happy_var_1 ->
- happyIn134
+happyReduce_399 = happySpecReduce_1 130# happyReduction_399
+happyReduction_399 happy_x_1
+ = case happyOut81 happy_x_1 of { happy_var_1 ->
+ happyIn136
(reverse happy_var_1
)}
-happyReduce_398 = happySpecReduce_3 129# happyReduction_398
-happyReduction_398 happy_x_3
+happyReduce_400 = happySpecReduce_3 131# happyReduction_400
+happyReduction_400 happy_x_3
happy_x_2
happy_x_1
- = case happyOut136 happy_x_2 of { happy_var_2 ->
- happyIn135
+ = case happyOut138 happy_x_2 of { happy_var_2 ->
+ happyIn137
(reverse happy_var_2
)}
-happyReduce_399 = happySpecReduce_3 130# happyReduction_399
-happyReduction_399 happy_x_3
+happyReduce_401 = happySpecReduce_3 132# happyReduction_401
+happyReduction_401 happy_x_3
happy_x_2
happy_x_1
- = case happyOut136 happy_x_1 of { happy_var_1 ->
- case happyOut80 happy_x_3 of { happy_var_3 ->
- happyIn136
+ = case happyOut138 happy_x_1 of { happy_var_1 ->
+ case happyOut82 happy_x_3 of { happy_var_3 ->
+ happyIn138
(reverse happy_var_3 ++ happy_var_1
)}}
-happyReduce_400 = happySpecReduce_1 130# happyReduction_400
-happyReduction_400 happy_x_1
- = case happyOut80 happy_x_1 of { happy_var_1 ->
- happyIn136
+happyReduce_402 = happySpecReduce_1 132# happyReduction_402
+happyReduction_402 happy_x_1
+ = case happyOut82 happy_x_1 of { happy_var_1 ->
+ happyIn138
(reverse happy_var_1
)}
-happyReduce_401 = happySpecReduce_2 131# happyReduction_401
-happyReduction_401 happy_x_2
+happyReduce_403 = happySpecReduce_2 133# happyReduction_403
+happyReduction_403 happy_x_2
happy_x_1
- = happyIn137
+ = happyIn139
([]
)
-happyReduce_402 = happySpecReduce_1 131# happyReduction_402
-happyReduction_402 happy_x_1
- = case happyOut133 happy_x_1 of { happy_var_1 ->
- happyIn137
+happyReduce_404 = happySpecReduce_1 133# happyReduction_404
+happyReduction_404 happy_x_1
+ = case happyOut135 happy_x_1 of { happy_var_1 ->
+ happyIn139
(happy_var_1
)}
-happyReduce_403 = happySpecReduce_2 132# happyReduction_403
-happyReduction_403 happy_x_2
+happyReduce_405 = happySpecReduce_2 134# happyReduction_405
+happyReduction_405 happy_x_2
happy_x_1
- = happyIn138
+ = happyIn140
((Nothing, Nothing, [])
)
-happyReduce_404 = happySpecReduce_3 132# happyReduction_404
-happyReduction_404 happy_x_3
+happyReduce_406 = happySpecReduce_3 134# happyReduction_406
+happyReduction_406 happy_x_3
happy_x_2
happy_x_1
- = case happyOut87 happy_x_2 of { happy_var_2 ->
- happyIn138
+ = case happyOut89 happy_x_2 of { happy_var_2 ->
+ happyIn140
((Nothing, Just happy_var_2, [])
)}
-happyReduce_405 = happyReduce 5# 132# happyReduction_405
-happyReduction_405 (happy_x_5 `HappyStk`
+happyReduce_407 = happyReduce 5# 134# happyReduction_407
+happyReduction_407 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut87 happy_x_2 of { happy_var_2 ->
- case happyOut142 happy_x_4 of { happy_var_4 ->
- happyIn138
+ = case happyOut89 happy_x_2 of { happy_var_2 ->
+ case happyOut144 happy_x_4 of { happy_var_4 ->
+ happyIn140
((Nothing, Just happy_var_2, happy_var_4)
) `HappyStk` happyRest}}
-happyReduce_406 = happySpecReduce_3 132# happyReduction_406
-happyReduction_406 happy_x_3
+happyReduce_408 = happySpecReduce_3 134# happyReduction_408
+happyReduction_408 happy_x_3
happy_x_2
happy_x_1
- = case happyOut142 happy_x_2 of { happy_var_2 ->
- happyIn138
+ = case happyOut144 happy_x_2 of { happy_var_2 ->
+ happyIn140
((Nothing, Nothing, happy_var_2)
)}
-happyReduce_407 = happySpecReduce_3 132# happyReduction_407
-happyReduction_407 happy_x_3
+happyReduce_409 = happySpecReduce_3 134# happyReduction_409
+happyReduction_409 happy_x_3
happy_x_2
happy_x_1
- = case happyOut139 happy_x_2 of { happy_var_2 ->
- happyIn138
+ = case happyOut141 happy_x_2 of { happy_var_2 ->
+ happyIn140
((Just happy_var_2, Nothing, [])
)}
-happyReduce_408 = happyReduce 5# 132# happyReduction_408
-happyReduction_408 (happy_x_5 `HappyStk`
+happyReduce_410 = happyReduce 5# 134# happyReduction_410
+happyReduction_410 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut139 happy_x_2 of { happy_var_2 ->
- case happyOut87 happy_x_4 of { happy_var_4 ->
- happyIn138
+ = case happyOut141 happy_x_2 of { happy_var_2 ->
+ case happyOut89 happy_x_4 of { happy_var_4 ->
+ happyIn140
((Just happy_var_2, Just happy_var_4, [])
) `HappyStk` happyRest}}
-happyReduce_409 = happyReduce 7# 132# happyReduction_409
-happyReduction_409 (happy_x_7 `HappyStk`
+happyReduce_411 = happyReduce 7# 134# happyReduction_411
+happyReduction_411 (happy_x_7 `HappyStk`
happy_x_6 `HappyStk`
happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
@@ -5058,89 +5123,89 @@ happyReduction_409 (happy_x_7 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut139 happy_x_2 of { happy_var_2 ->
- case happyOut87 happy_x_4 of { happy_var_4 ->
- case happyOut142 happy_x_6 of { happy_var_6 ->
- happyIn138
+ = case happyOut141 happy_x_2 of { happy_var_2 ->
+ case happyOut89 happy_x_4 of { happy_var_4 ->
+ case happyOut144 happy_x_6 of { happy_var_6 ->
+ happyIn140
((Just happy_var_2, Just happy_var_4, happy_var_6)
) `HappyStk` happyRest}}}
-happyReduce_410 = happyReduce 5# 132# happyReduction_410
-happyReduction_410 (happy_x_5 `HappyStk`
+happyReduce_412 = happyReduce 5# 134# happyReduction_412
+happyReduction_412 (happy_x_5 `HappyStk`
happy_x_4 `HappyStk`
happy_x_3 `HappyStk`
happy_x_2 `HappyStk`
happy_x_1 `HappyStk`
happyRest)
- = case happyOut139 happy_x_2 of { happy_var_2 ->
- case happyOut142 happy_x_4 of { happy_var_4 ->
- happyIn138
+ = case happyOut141 happy_x_2 of { happy_var_2 ->
+ case happyOut144 happy_x_4 of { happy_var_4 ->
+ happyIn140
((Just happy_var_2, Nothing, happy_var_4)
) `HappyStk` happyRest}}
-happyReduce_411 = happySpecReduce_1 133# happyReduction_411
-happyReduction_411 happy_x_1
+happyReduce_413 = happySpecReduce_1 135# happyReduction_413
+happyReduction_413 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) ->
- happyIn139
+ happyIn141
(Ranged (getRange happy_var_1) Inductive
)}
-happyReduce_412 = happySpecReduce_1 133# happyReduction_412
-happyReduction_412 happy_x_1
+happyReduce_414 = happySpecReduce_1 135# happyReduction_414
+happyReduction_414 happy_x_1
= case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) ->
- happyIn139
+ happyIn141
(Ranged (getRange happy_var_1) CoInductive
)}
-happyReduce_413 = happySpecReduce_3 134# happyReduction_413
-happyReduction_413 happy_x_3
+happyReduce_415 = happySpecReduce_3 136# happyReduction_415
+happyReduction_415 happy_x_3
happy_x_2
happy_x_1
- = case happyOut142 happy_x_2 of { happy_var_2 ->
- happyIn140
+ = case happyOut144 happy_x_2 of { happy_var_2 ->
+ happyIn142
(happy_var_2
)}
-happyReduce_414 = happySpecReduce_2 135# happyReduction_414
-happyReduction_414 happy_x_2
+happyReduce_416 = happySpecReduce_2 137# happyReduction_416
+happyReduction_416 happy_x_2
happy_x_1
- = happyIn141
+ = happyIn143
([]
)
-happyReduce_415 = happySpecReduce_1 135# happyReduction_415
-happyReduction_415 happy_x_1
- = case happyOut140 happy_x_1 of { happy_var_1 ->
- happyIn141
+happyReduce_417 = happySpecReduce_1 137# happyReduction_417
+happyReduction_417 happy_x_1
+ = case happyOut142 happy_x_1 of { happy_var_1 ->
+ happyIn143
(happy_var_1
)}
-happyReduce_416 = happySpecReduce_3 136# happyReduction_416
-happyReduction_416 happy_x_3
+happyReduce_418 = happySpecReduce_3 138# happyReduction_418
+happyReduction_418 happy_x_3
happy_x_2
happy_x_1
- = case happyOut78 happy_x_1 of { happy_var_1 ->
- case happyOut142 happy_x_3 of { happy_var_3 ->
- happyIn142
+ = case happyOut80 happy_x_1 of { happy_var_1 ->
+ case happyOut144 happy_x_3 of { happy_var_3 ->
+ happyIn144
(happy_var_1 ++ happy_var_3
)}}
-happyReduce_417 = happySpecReduce_1 136# happyReduction_417
-happyReduction_417 happy_x_1
- = case happyOut78 happy_x_1 of { happy_var_1 ->
- happyIn142
+happyReduce_419 = happySpecReduce_1 138# happyReduction_419
+happyReduction_419 happy_x_1
+ = case happyOut80 happy_x_1 of { happy_var_1 ->
+ happyIn144
(happy_var_1
)}
-happyReduce_418 = happySpecReduce_0 137# happyReduction_418
-happyReduction_418 = happyIn143
+happyReduce_420 = happySpecReduce_0 139# happyReduction_420
+happyReduction_420 = happyIn145
([]
)
-happyReduce_419 = happySpecReduce_1 137# happyReduction_419
-happyReduction_419 happy_x_1
- = case happyOut142 happy_x_1 of { happy_var_1 ->
- happyIn143
+happyReduce_421 = happySpecReduce_1 139# happyReduction_421
+happyReduction_421 happy_x_1
+ = case happyOut144 happy_x_1 of { happy_var_1 ->
+ happyIn145
(happy_var_1
)}
@@ -5257,7 +5322,7 @@ tokensParser = happySomeParser where
happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut6 x))
exprParser = happySomeParser where
- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut31 x))
+ happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut32 x))
moduleParser = happySomeParser where
happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut9 x))
@@ -5360,7 +5425,7 @@ tLet r = TypedBindings r . Common.Arg defaultArgInfo . TLet r
-- | Converts lambda bindings to typed bindings.
addType :: LamBinding -> TypedBindings
addType (DomainFull b) = b
-addType (DomainFree info x) = TypedBindings r $ Common.Arg info $ TBind r [x] $ Underscore r Nothing
+addType (DomainFree info x) = TypedBindings r $ Common.Arg info $ TBind r [pure x] $ Underscore r Nothing
where r = getRange x
mergeImportDirectives :: [ImportDirective] -> Parser ImportDirective
diff --git a/src/data/EpicInclude/AgdaPrelude.e b/src/data/EpicInclude/AgdaPrelude.e
deleted file mode 100644
index 5cdc63c..0000000
--- a/src/data/EpicInclude/AgdaPrelude.e
+++ /dev/null
@@ -1,207 +0,0 @@
-%include "string.h"
-
--- IO
-
-{-
-%inline putStr (x:String) -> Unit =
- foreign Unit "wputStr" (x:String)
-
-putStrLn (x:String) -> Unit =
- putStr(primStringAppend(x,"\n"))
-
-readStr () -> String =
- foreign String "readStr" ()
-
-intToStr (x:Int) -> String =
- foreign String "intToStr" (x:Int)
-
-strToInt (x:String) -> Int =
- foreign String "strToInt" (x:String)
-
-printInt (x:Int) -> Unit =
- foreign Unit "printInt" (x:Int)
--}
-
-ioreturn (a : Any, u : Unit) -> Any = a
-iobind (x : Any, f : Any, u : Unit) -> Any = %effect (let v : Any = %effect (x(u)) in f (v, u))
-
--- String operations
-
--- data String = Con 0 | Con 1 (Char*) String
-
-freadStr (stream : Ptr) -> String =
- let isEof : Bool = foreign Int "feof" (stream : Ptr)
- in if isEof then Con 0 ()
- else let str : String = %effect(foreign String "freadStrChunk" (stream : Ptr))
- in primStringAppend( str , freadStr (stream))
-
-readStr (u : Unit) -> String =
- let isEof : Bool = foreign Int "eofstdin" ()
- in if isEof then Con 0 ()
- else let str : String = %effect(foreign String "readStrChunk" ())
- in primStringAppend ( str , readStr (u))
-
-primStringAppend (xs : String, ys : String) -> String =
- foreign String "append" (xs : String, ys : String)
-
-
-%inline length (xs : String) -> Int = strlen (xs)
-
-charAt (xs : String, i : Int) -> Int =
- foreign Int "strIndex" (xs : String , i : Int)
-
-primStringEquality (xs : String, ys : String) -> Bool =
- foreign Int "eqString" (xs : String, ys : String)
-
-charToString (c : Int) -> String =
- foreign String "charToStr" (c : Int)
-
-strlen (s : String) -> Int = foreign Int "strlen" (s : String)
-
--- TODO: toList/fromList could be made slightly more efficient.
-
-primStringToList (xs : String) -> Data = %effect(
- let result : Data = primNil () in
- let i : Int = strlen (xs) - 1 in
- %while (i >= 0,
- let ! result = primCons (foreign Int "strIndex" (xs : String, i : Int), result) in
- let ! i = i - 1 in
- unit) ;
- result)
-
-
-map (f : Any, l : Any) -> Any = case l of
- { Con 0 () -> Con 0 ()
- | Con 1 (x : Any, xs : Any) -> Con 1 (f (x), map (f, xs))
- }
-
-primStringFromList (l : Data) -> String =
- case l of {
- Con 0 () -> ""
- | Con 1 (c : Char, cs : Data) -> strCons (c , primStringFromList(cs))
- }
-
-strCons(i : Int , s : String) -> String =
- foreign String "strCons" (i : Int, s : String)
-
--- Lists
-
-primNil () -> Data = Con 0 ()
-
-primCons(x : Any , xs : Data) -> Data = Con 1 (x, xs)
-
-listElim (op : Any, z : Any, xs : Data) -> Any = case xs of
- { Con 0 () -> z
- | Con 1 (y : Any, ys : Data) -> op (y, listElim(op, z, ys))
- }
-
-primListAppend (xs : Data, ys : Data) -> Data = listElim(primCons, ys, xs)
--- Big number arithmetic
-
-subBig (x:BigInt, y:BigInt) -> BigInt =
- foreign BigInt "subBig" (x:BigInt, y:BigInt)
-
-gtBig (x:BigInt, y:BigInt) -> Bool =
- foreign Int "gtBig" (x:BigInt, y:BigInt)
-
-leBig (x:BigInt, y:BigInt) -> Bool =
- foreign Int "leBig" (x:BigInt, y:BigInt)
-
-geBig (x:BigInt, y:BigInt) -> Bool =
- foreign Int "geBig" (x:BigInt, y:BigInt)
-
-printBig (x:BigInt) -> Unit =
- foreign Unit "printBig" (x:BigInt)
-
-bigToStr (x:BigInt) -> String =
- foreign String "bigToStr" (x:BigInt)
-
-strToBig (x : String) -> Any = foreign BigInt "strToBig" (x : String)
-
--- strToBig (x:String) -> Any =
--- foreign Any "strToBig" (x:String)
-
-bigToInt (x : BigInt) -> Int =
- foreign Int "bigToInt" (x : BigInt)
-
--- Unit
-
-%inline primUnit() -> Unit = unit
-
--- Nats
-
-primNatPlus (x:Any, y:Any) -> Any =
- foreign Any "addBig" (x:Any, y:Any)
-
-primNatTimes (x:Any, y:Any) -> Any =
- foreign Any "mulBig" (x:Any, y:Any)
-
-%inline primNatMinus(x : Any, y : Any) -> Any = atLeastZeroBig(subBig(x, y))
-
-
-
-primZero() -> Any = 0L -- foreign BigInt "bigZero" ()
-primOne() -> Any = 1L -- foreign BigInt "bigOne" ()
-
-primSuc (n : Any) -> Any = primNatPlus(n, primOne())
-
-primPred(n : Any) -> Any = subBig(n, primOne())
-
-%inline atLeastZeroBig (x : Any) -> Any =
- if primNatLess(x, primZero)
- then primZero
- else x
-
-primNatModSucAux(k : BigInt, m : BigInt, n : BigInt, j : BigInt) -> BigInt =
- foreign BigInt "modBig" (n : BigInt, m : BigInt)
-
-
-
-primNatEquality (x:BigInt, y:BigInt) -> Bool =
- foreign Int "eqBig" (x:BigInt, y:BigInt)
-
-primNatLess (x:BigInt, y:BigInt) -> Bool =
- foreign Int "ltBig" (x:BigInt, y:BigInt)
-
-
--- Bools
-
-%inline primTrue () -> Bool = true
-
-%inline primFalse () -> Bool = false
-
--- Chars
-
-printChar (x:Int) -> Unit =
- foreign Unit "printCharRep" (x:Int)
-
-%inline primCharEquality (c1 : Int, c2 : Int) -> Bool = c1 == c2
-
-primCharToNat (c : Int) -> BigInt = foreign BigInt "NEWBIGINTVALI" (c : Int)
-
-
--- Floats
-floatToStr (x : Float) -> String =
- foreign String "floatToStr" (x : Float)
-
-strToFloat (s : String) -> Float =
- foreign Float "strToFloat" (s : String)
-
--- Coinduction
-
-primSharp (u1 : Any, u2 : Any, x : Any) -> Data = Con 0 (x)
-
--- RUNTIME
-
-init () -> Unit =
- foreign Unit "init" ()
-
--- Levels
-
-primLevelMax (x : Any, y : Any) -> Any = 0L -- error "primLevelMax"
-primLevelZero () -> Any = 0L -- error "primLevelZero"
-primLevelSuc (x : Any) -> Any = primSuc(x) -- error "primLevelSuc"
-
--- TrustMe
-
-primTrustMe (a : Unit, x : Any, y : Any) -> Any = Con 0 ()
diff --git a/src/data/EpicInclude/stdagda.c b/src/data/EpicInclude/stdagda.c
deleted file mode 100644
index 9ebec53..0000000
--- a/src/data/EpicInclude/stdagda.c
+++ /dev/null
@@ -1,95 +0,0 @@
-#include "stdagda.h"
-#include <stdlib.h>
-#include <unistd.h>
-#include <gmp.h>
-#include <string.h>
-#include <sys/time.h>
-#include <locale.h>
-//#include "closure.h"
-
-
-#define _UNICODE
-#define UNICODE
-
-void wputStr(char* s) { wprintf(L"%s",s); }
-
-int eqString(char *x, char *y) {
- return strcmp(x, y) == 0;
-}
-
-VAL bigZeroRep;
-VAL bigOneRep;
-
-VAL bigZero() { return bigZeroRep;}
-VAL bigOne() {return bigOneRep;}
-
-void init(void) {
- setlocale(LC_CTYPE, "");
-
- bigZeroRep = NEWBIGINTVALI(0);
- bigOneRep = NEWBIGINTVALI(1);
-}
-
-void printCharRep(int c) {
-
- wprintf(L"%lc", c);
-}
-
-int bigToInt(VAL n) {
- return (int) mpz_get_si(*(GETBIGINT(n)));
-}
-
-VAL intToBig(int n) {
- return NEWBIGINTVALI(n);
-}
-
-VAL getArgBig(VAL num) {
- return evm_getArg(bigToInt(num));
-}
-
-VAL numArgsBig(void) {
- return NEWBIGINTVALI(epic_numArgs());
-}
-
-char* charToStr(int x)
-{
- char* buf = EMALLOC(2*sizeof(char));
- buf[0] = (char)x; buf[1] = '\0';
- return buf;
-}
-
-int eof() { return EOF; }
-
-int charAtBig(char* str, VAL n)
-{
- return (int)str[bigToInt(n)];
-}
-
-int charAt(char* str, int n) { return (int)str[n]; }
-
-#define STRING_BUFFER_SIZE 1024
-
-int eofstdin() { return feof(stdin);}
-
-char* readStrChunk() { return freadStrChunk(stdin); }
-
-char* freadStrChunk(FILE* f) {
- char* in = EMALLOC(sizeof(char)*STRING_BUFFER_SIZE);
- fgets(in,STRING_BUFFER_SIZE,f);
- return in;
-}
-
-void** newArray(VAL size)
-{
- return EMALLOC(sizeof(void*)*bigToInt(size));
-}
-
-void* arrayIndex(void** array, VAL i)
-{
- return array[bigToInt(i)];
-}
-
-void setArrayIndex(void** array, VAL i, void* val)
-{
- array[bigToInt(i)] = val;
-}
diff --git a/src/data/EpicInclude/stdagda.h b/src/data/EpicInclude/stdagda.h
deleted file mode 100644
index b15a6a6..0000000
--- a/src/data/EpicInclude/stdagda.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef _STDAGDA_H
-#define _STDAGDA_H
-
-# ifndef WIN32
-# include <pthread.h>
-# define GC_THREADS
-# else
-# define GC_WIN32_THREADS
-# endif
-
-#include <gc/gc.h>
-#include <gmp.h>
-#include <stdio.h>
-#include "stdfuns.h"
-void init(void);
-int eqString(char *x, char *y);
-void printCharRep(int c);
-
-void wputStr(char* s);
-
-int bigToInt(VAL n);
-VAL intToBig(int n);
-
-VAL getArgBig(VAL num);
-
-VAL numArgsBig(void);
-
-FILE* getStdin (void);
-FILE* getStdout(void);
-
-
-char* charToStr(int x);
-int charAt(char* str, int n);
-int charAtBig(char* str, VAL n);
-
-int eof();
-
-char* freadStrChunk(FILE* f);
-// void* freadStrChunk(void* h);
-
-#endif \ No newline at end of file
diff --git a/src/data/emacs-mode/agda-input.el b/src/data/emacs-mode/agda-input.el
index 37e39bd..be2f391 100644
--- a/src/data/emacs-mode/agda-input.el
+++ b/src/data/emacs-mode/agda-input.el
@@ -163,7 +163,7 @@ order for the change to take effect."
(agda-input-drop-prefix "\\")
(agda-input-or
(agda-input-compose
- (agda-input-drop '("^o"))
+ (agda-input-drop '("^l" "^o" "^r" "^v"))
(agda-input-prefix "^"))
(agda-input-prefix "_")))))
)
@@ -539,7 +539,6 @@ order for the change to take effect."
("\\" . ("\\"))
("en" . ("–"))
("em" . ("—"))
- ("^i" . ("ⁱ"))
("!!" . ("‼"))
("??" . ("⁇"))
("?!" . ("‽" "⁈"))
diff --git a/src/data/emacs-mode/agda2-mode.el b/src/data/emacs-mode/agda2-mode.el
index a9ac767..a3a3118 100644
--- a/src/data/emacs-mode/agda2-mode.el
+++ b/src/data/emacs-mode/agda2-mode.el
@@ -10,19 +10,18 @@
;;; Code:
-(defvar agda2-version "2.4.2.2"
+(defvar agda2-version "2.4.2.3"
"The version of the Agda mode.
Note that the same version of the Agda executable must be used.")
(require 'cl)
-(set (make-local-variable 'lisp-indent-function)
- 'common-lisp-indent-function)
(require 'compile)
(require 'pp)
(require 'time-date)
(require 'eri)
(require 'annotation)
(require 'agda-input)
+(require 'agda2)
(require 'agda2-highlight)
(require 'agda2-abbrevs)
(require 'agda2-queue)
@@ -33,6 +32,8 @@ Note that the same version of the Agda executable must be used.")
(error nil))
(unless (fboundp 'overlays-in) (load "overlay")) ; for Xemacs
(unless (fboundp 'propertize) ; for Xemacs 21.4
+ ;; FIXME: XEmacs-21.4 (patch 22) does have `propertize' and so does Emacs-22
+ ;; (and agda2-mode doesn't work in Emacs-21, AFAICT).
(defun propertize (string &rest properties)
"Return a copy of STRING with text properties added.
First argument is the string to copy.
@@ -41,12 +42,8 @@ properties to add to the result."
(let ((str (copy-sequence string)))
(add-text-properties 0 (length str) properties str)
str)))
- (unless (fboundp 'run-mode-hooks)
- (fset 'run-mode-hooks 'run-hooks)) ; For Emacs versions < 21.
- (unless (fboundp 'cl-labels)
- (fset 'cl-labels 'labels)) ; For Emacs versions < 24.2.
- (unless (fboundp 'cl-flet)
- (fset 'cl-flet 'flet))) ; For Emacs versions < 24.2.
+ (unless (fboundp 'prog-mode) ;For Emacs<24.
+ (defalias 'prog-mode 'fundamental-mode)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Utilities
@@ -56,9 +53,10 @@ properties to add to the result."
Or possibly (let* VARBIND (labels FUNCBIND BODY...))."
(declare (debug ((&rest [&or symbolp (symbolp form)])
(&rest (cl-defun))
- body)))
- `(let* ,varbind (cl-labels ,funcbind ,@body)))
-(put 'agda2-let 'lisp-indent-function 2)
+ body))
+ (indent 2))
+ ;; Use cl-labels if available to avoid obsolescence warnings.
+ `(let* ,varbind (,(if (fboundp 'cl-labels) 'cl-labels 'labels) ,funcbind ,@body)))
(defun agda2-chunkify (n xs)
"Returns a list containing chunks of XS of length at most N.
@@ -252,6 +250,7 @@ constituents.")
(describe-char nil (global) "Information about the character at point")
(agda2-comment-dwim-rest-of-buffer ,(kbd "C-c C-x M-;") (global) "Comment/uncomment the rest of the buffer")
(agda2-display-program-version nil (global) "Version")
+ (agda2-set-program-version nil (global) "Switch to another version of Agda")
(eri-indent ,(kbd "TAB"))
(eri-indent-reverse [S-iso-lefttab])
(eri-indent-reverse [S-lefttab])
@@ -381,9 +380,7 @@ Note that this variable is not buffer-local.")
;;;###autoload
(modify-coding-system-alist 'file "\\.l?agda\\'" 'utf-8)
;;;###autoload
-(eval `(define-derived-mode agda2-mode
- ,(if (fboundp 'prog-mode) 'prog-mode)
- "Agda"
+(define-derived-mode agda2-mode prog-mode "Agda"
"Major mode for Agda files.
The following paragraph does not apply to Emacs 23 or newer.
@@ -444,7 +441,7 @@ Special commands:
;; including "mode: latex" is loaded chances are that the Agda mode
;; is activated before the LaTeX mode, and the LaTeX mode does not
;; seem to remove the text properties set by the Agda mode.
- (add-hook 'change-major-mode-hook 'agda2-quit nil 'local)))
+ (add-hook 'change-major-mode-hook 'agda2-quit nil 'local))
(defun agda2-restart ()
"Kill and restart the *agda2* buffer and load `agda2-toplevel-module'."
@@ -573,7 +570,13 @@ arrived. Otherwise highlighting annotations are
reloaded from `agda2-highlighting-file', unless
`agda2-highlighting-in-progress' is nil."
-
+ ;; Beware: the buffer may have been killed in the mean time. E.g. when
+ ;; viewing an attachment containing Agda code in Gnus, Gnus will
+ ;; create a temp buffer, set it in agda2-mode, call font-lock-ensure on it
+ ;; (which won't know that it needs to wait for some process to reply), then
+ ;; extract the fontified text and kill the temp buffer; so when Agda
+ ;; finally answers, the temp buffer is long gone.
+ (when (buffer-live-p agda2-file-buffer)
(let (;; The input lines in the current chunk.
(lines (split-string chunk "\n"))
@@ -652,7 +655,7 @@ reloaded from `agda2-highlighting-file', unless
(setq agda2-measure-data nil)
(message "Load time: %s." elapsed)
(when continuation
- (funcall continuation elapsed)))))))))
+ (funcall continuation elapsed))))))))))
(defun agda2-run-last-commands nil
"Execute the last commands in the right order.
@@ -988,11 +991,12 @@ is inserted, and point is placed before this text."
(defun agda2-term ()
"Send a SIGTERM signal to the Agda2 process, then kill its buffer."
(interactive)
- (with-current-buffer agda2-process-buffer
- (condition-case nil
- (signal-process agda2-process 'SIGTERM)
- (error nil))
- (kill-buffer)))
+ (when (buffer-live-p agda2-process-buffer)
+ (with-current-buffer agda2-process-buffer
+ (condition-case nil
+ (signal-process agda2-process 'SIGTERM)
+ (error nil))
+ (kill-buffer))))
(defmacro agda2-maybe-normalised (name comment cmd want)
"This macro constructs a function NAME which runs CMD.
@@ -1220,6 +1224,15 @@ If there is any to load."
"Is the current buffer a literate Agda buffer?"
(equal (file-name-extension (buffer-name)) "lagda"))
+(defmacro agda2--case (exp &rest branches) ;FIXME: Use `pcase' instead!
+ (declare (debug t) (indent 1))
+ (let ((s (make-symbol "v")))
+ `(let ((,s ,exp))
+ (cond
+ ,@(mapcar (lambda (branch)
+ `((equal ,s ,(car branch)) ,@(cdr branch)))
+ branches)))))
+
(defun agda2-goals-action (goals)
"Annotates the goals in the current buffer with text properties.
GOALS is a list of the buffer's goal numbers, in the order in
@@ -1267,34 +1280,33 @@ ways."
(if literate (push 'outside stk))
(goto-char (point-min))
(while (and goals (safe-delims))
- (cl-labels ((c (s) (equal s (match-string 0))))
- (cond
- ((c "\\begin{code}") (when (outside-code) (pop stk)))
- ((c "\\end{code}") (when (not stk) (push 'outside stk)))
- ((c "--") (when (and (not stk)
- (is-proper "--" t)) (end-of-line)))
- ((c "{-") (when (and (inside-code)
- (not (inside-goal))) (push nil stk)))
- ((c "-}") (when (inside-comment) (pop stk)))
- ((c "{!") (when (and (inside-code)
- (not (inside-comment))) (push (- (point) 2) stk)))
- ((c "!}") (when (inside-goal)
- (setq top (pop stk))
- (unless stk (make top))))
- ((c "?") (progn
- (when (and (not stk) (is-proper "?" nil))
- (delete-char -1)
- (insert "{!!}")
- (make (- (point) 4)))))))))))
+ (agda2--case (match-string 0)
+ ("\\begin{code}" (when (outside-code) (pop stk)))
+ ("\\end{code}" (when (not stk) (push 'outside stk)))
+ ("--" (when (and (not stk)
+ (is-proper "--" t)) (end-of-line)))
+ ("{-" (when (and (inside-code)
+ (not (inside-goal))) (push nil stk)))
+ ("-}" (when (inside-comment) (pop stk)))
+ ("{!" (when (and (inside-code)
+ (not (inside-comment))) (push (- (point) 2) stk)))
+ ("!}" (when (inside-goal)
+ (setq top (pop stk))
+ (unless stk (make top))))
+ ("?" (progn
+ (when (and (not stk) (is-proper "?" nil))
+ (delete-char -1)
+ (insert "{!!}")
+ (make (- (point) 4))))))))))
(defun agda2-make-goal (p q n)
"Make a goal with number N at <P>{!...!}<Q>. Assume the region is clean."
(annotation-preserve-mod-p-and-undo
- (cl-flet ((atp (x ps) (add-text-properties x (1+ x) ps)))
- (atp p '(category agda2-delim1))
- (atp (1+ p) '(category agda2-delim2))
- (atp (- q 2) '(category agda2-delim3))
- (atp (1- q) '(category agda2-delim4)))
+ (let ((atp (lambda (x ps) (add-text-properties x (1+ x) ps))))
+ (funcall atp p '(category agda2-delim1))
+ (funcall atp (1+ p) '(category agda2-delim2))
+ (funcall atp (- q 2) '(category agda2-delim3))
+ (funcall atp (1- q) '(category agda2-delim4)))
(let ((o (make-overlay p q nil t nil)))
(overlay-put o 'modification-hooks '(agda2-protect-goal-markers))
(overlay-put o 'agda2-gn n)
@@ -1601,5 +1613,90 @@ the argument is a positive number, otherwise turn it off."
(call-interactively
(lookup-key agda2-goal-map (apply 'vector choice)))))))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Switching to a different version of Agda
+
+;; Note that other versions of Agda may use different protocols, so
+;; this function unloads the Emacs mode.
+
+(defun agda2-set-program-version (version)
+ "Tries to switch to Agda version VERSION.
+
+This command assumes that the agda and agda-mode executables for
+Agda version VERSION are called agda-VERSION and
+agda-mode-VERSION, and that they are located on the PATH. (If
+VERSION is empty, then agda and agda-mode are used instead.)"
+ (interactive "M")
+
+ (let*
+ ((agda-buffers
+ (mapcan (lambda (buf)
+ (with-current-buffer buf
+ (when (equal major-mode 'agda2-mode)
+ (list buf))))
+ (buffer-list)))
+
+ (version-suffix (if (or (equal version "")
+ (equal version nil))
+ ""
+ (concat "-" version)))
+
+ ;; Run agda-mode<version-suffix> and make sure that it returns
+ ;; successfully.
+ (coding-system-for-read 'utf-8)
+ (agda-mode-prog (concat "agda-mode" version-suffix))
+ (agda-mode-path
+ (condition-case nil
+ (with-temp-buffer
+ (unless
+ (equal 0 (call-process agda-mode-prog
+ nil (current-buffer) nil
+ "locate"))
+ (error "%s" (concat "Error when running "
+ agda-mode-prog)))
+ (buffer-string))
+ (file-error
+ (error "%s" (concat "Could not find " agda-mode-prog))))))
+
+ ;; Make sure that agda-mode<version-suffix> returns a valid file.
+ (unless (file-readable-p agda-mode-path)
+ (error "%s" (concat "Could not read " agda-mode-path)))
+
+ ;; Kill some processes/buffers related to Agda.
+ (when (and agda2-process
+ (process-status agda2-process))
+ (kill-process agda2-process))
+ (when (buffer-live-p agda2-process-buffer)
+ (kill-buffer agda2-process-buffer))
+ (when (buffer-live-p agda2-info-buffer)
+ (kill-buffer agda2-info-buffer))
+ (when (and agda2-debug-buffer-name
+ (get-buffer agda2-debug-buffer-name))
+ (kill-buffer agda2-debug-buffer-name))
+
+ ;; Remove the Agda mode directory from the load path.
+ (setq load-path (delete agda2-directory load-path))
+
+ ;; Unload the Agda mode and its dependencies.
+ (unload-feature 'agda2-mode 'force)
+ (unload-feature 'agda2 'force)
+ (unload-feature 'eri 'force)
+ (unload-feature 'annotation 'force)
+ (unload-feature 'agda-input 'force)
+ (unload-feature 'agda2-highlight 'force)
+ (unload-feature 'agda2-abbrevs 'force)
+ (unload-feature 'agda2-queue 'force)
+
+ ;; Load the new version of Agda.
+ (load-file agda-mode-path)
+ (require 'agda2-mode)
+ (setq agda2-program-name (concat "agda" version-suffix))
+
+ ;; Restart the Agda mode in all former Agda mode buffers.
+ (mapc (lambda (buf)
+ (with-current-buffer buf
+ (agda2-mode)))
+ agda-buffers)))
+
(provide 'agda2-mode)
;;; agda2-mode.el ends here
diff --git a/src/data/emacs-mode/agda2.el b/src/data/emacs-mode/agda2.el
index 3dc7eb9..1311ee7 100644
--- a/src/data/emacs-mode/agda2.el
+++ b/src/data/emacs-mode/agda2.el
@@ -2,8 +2,10 @@
;; Agda mode code which should run before the first Agda file is
;; loaded
-(add-to-list 'load-path
- (or (file-name-directory load-file-name) (car load-path)))
+(defvar agda2-directory (file-name-directory load-file-name)
+ "Path to the directory that contains agda2.el(c).")
+
+(add-to-list 'load-path (or agda2-directory (car load-path)))
(autoload 'agda2-mode "agda2-mode"
"Major mode for editing Agda files (version ≥ 2)." t)
diff --git a/src/full/Agda/Auto/Auto.hs b/src/full/Agda/Auto/Auto.hs
index d18b0ff..3643e7b 100644
--- a/src/full/Agda/Auto/Auto.hs
+++ b/src/full/Agda/Auto/Auto.hs
@@ -1,6 +1,10 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE TupleSections #-}
+#if __GLASGOW_HASKELL__ >= 710
+{-# LANGUAGE FlexibleContexts #-}
+#endif
+
module Agda.Auto.Auto (auto) where
import Prelude hiding (null)
@@ -15,14 +19,16 @@ import Data.Functor
import qualified Data.Traversable as Trav
import Agda.Utils.Permutation (permute, takeP)
-import Agda.TypeChecking.Monad.Base
-import Agda.TypeChecking.Monad.MetaVars
-import Agda.TypeChecking.Monad.Context
-import Agda.TypeChecking.Monad.Signature
+import Agda.TypeChecking.Monad hiding (withCurrentModule)
+-- import Agda.TypeChecking.Monad.Base
+-- import Agda.TypeChecking.Monad.MetaVars
+-- import Agda.TypeChecking.Monad.Context
+-- import Agda.TypeChecking.Monad.Signature
import Agda.TypeChecking.Substitute
import qualified Agda.Syntax.Abstract as A
import Agda.Syntax.Abstract.Pretty (prettyA)
import qualified Text.PrettyPrint as PP
+import qualified Agda.TypeChecking.Pretty as TCM
import Agda.Syntax.Position
import qualified Agda.Syntax.Internal as I
import Agda.Syntax.Translation.InternalToAbstract
@@ -143,17 +149,23 @@ auto ii rng argstr = do
let (mainm, _, _, _) = tccons Map.! mi
case mode of
MNormal listmode disprove -> do
+ let numsols = if listmode then 10 else 1
+ -- Andreas, 2015-05-17 Issue 1504:
+ -- wish to produce several solutions, as
+ -- the first one might be ill-typed.
+ -- However, currently changing the 1 to something higher makes Agsy loop.
sols <- liftIO $ newIORef ([] :: [[I.Term]])
- nsol <- liftIO $ newIORef $ if listmode then pick + 10 else pick + 1
+ nsol <- liftIO $ newIORef $ pick + numsols
let hsol = do
nsol' <- readIORef nsol
- let cond = if listmode then nsol' <= 10 else nsol' == 1
+ let cond = nsol' <= numsols
when cond $ do
trms <- runExceptT $ mapM (\ (m, _, _, _) -> frommy (Meta m)) $ Map.elems tccons
case trms of
Left{} -> writeIORef nsol $! nsol' + 1
- Right trms -> if listmode then modifyIORef sols (trms :)
- else writeIORef sols [trms]
+ Right trms -> modifyIORef sols (trms :)
+ -- Right trms -> if listmode then modifyIORef sols (trms :)
+ -- else writeIORef sols [trms]
ticks <- liftIO $ newIORef 0
let exsearch initprop recinfo defdfv =
@@ -207,7 +219,7 @@ auto ii rng argstr = do
rsols <- liftM reverse $ liftIO $ readIORef sols
if null rsols then do
nsol' <- liftIO $ readIORef nsol
- dispmsg $ insuffsols (pick + (if listmode then 10 else 1) - nsol')
+ dispmsg $ insuffsols (pick + numsols - nsol')
else do
aexprss <- mapM getsols rsols
cexprss <- forM aexprss $ mapM $ \(mi, e) -> do
@@ -261,55 +273,77 @@ auto ii rng argstr = do
rsols <- liftM reverse $ liftIO $ readIORef sols
if null rsols then do
nsol' <- liftIO $ readIORef nsol
- dispmsg $ insuffsols (pick + 10 - nsol') ++ timeoutString
+ dispmsg $ insuffsols (pick + numsols - nsol') ++ timeoutString
else do
aexprss <- mapM getsols rsols
- cexprss <- mapM (mapM (\(mi, e) -> lookupMeta mi >>= \mv -> withMetaInfo (getMetaInfo mv) $ abstractToConcrete_ e >>= \e' -> return (mi, e'))) aexprss
+ -- cexprss <- mapM (mapM (\(mi, e) -> lookupMeta mi >>= \mv -> withMetaInfo (getMetaInfo mv) $ abstractToConcrete_ e >>= \e' -> return (mi, e'))) aexprss
+ cexprss <- forM aexprss $ do
+ mapM $ \ (mi, e) -> do
+ mv <- lookupMeta mi
+ withMetaInfo (getMetaInfo mv) $ do
+ e' <- abstractToConcrete_ e
+ return (mi, e')
let disp [(_, cexpr)] = show cexpr
- disp cexprs = concat (map (\(mi, cexpr) -> case lookup mi riis of {Nothing -> show mi; Just ii -> show ii} ++ " := " ++ show cexpr ++ " ") cexprs)
+ disp cexprs = concat $ for cexprs $ \ (mi, cexpr) ->
+ maybe (show mi) show (lookup mi riis)
+ ++ " := " ++ show cexpr ++ " "
ticks <- liftIO $ readIORef ticks
dispmsg $ "Listing solution(s) " ++ show pick ++ "-" ++ show (pick + length rsols - 1) ++ timeoutString ++
"\n" ++ unlines (map (\(x, y) -> show y ++ " " ++ disp x) $ zip cexprss [pick..])
- else
+ else {- not listmode -}
case res of
Nothing -> do
nsol' <- liftIO $ readIORef nsol
- dispmsg $ insuffsols (pick + 1 - nsol') ++ timeoutString
+ dispmsg $ insuffsols (pick + numsols - nsol') ++ timeoutString
Just depthreached -> do
ticks <- liftIO $ readIORef ticks
rsols <- liftIO $ readIORef sols
case rsols of
- [] -> do
- nsol' <- liftIO $ readIORef nsol
- dispmsg $ insuffsols (pick + 1 - nsol')
- (term : _) -> do
- exprs <- getsols term
- giveress <-
- mapM (\(mi, expr) ->
- case lookup mi riis of
- Nothing ->
- catchError
- (giveExpr mi expr >>= \_ -> return (Nothing, Nothing))
- (\_ -> return (Nothing, Just ("Failed to give expr for side solution of " ++ show mi)))
- Just ii' -> do ae <- give ii' Nothing expr
- mv <- lookupMeta mi
- let scope = getMetaScope mv
- ce <- abstractToConcreteEnv (makeEnv scope) ae
- let cmnt = if ii' == ii then agsyinfo ticks else ""
- return (Just (ii', show ce ++ cmnt), Nothing)
- ) exprs
- let msg = if length exprs == 1 then
- Nothing
- else
- Just $ "Also gave solution(s) for hole(s)" ++
- concatMap (\(mi', _) ->
- if mi' == mi then "" else (" " ++ case lookup mi' riis of {Nothing -> show mi'; Just ii -> show ii})
- ) exprs
- let msgs = catMaybes $ msg : map snd giveress
- msg' = case msgs of
- [] -> Nothing
- _ -> Just $ unlines msgs
- return (Left $ catMaybes $ map fst giveress, msg')
+ [] -> do
+ nsol' <- liftIO $ readIORef nsol
+ dispmsg $ insuffsols (pick + numsols - nsol')
+ terms -> loop terms where
+ -- Andreas, 2015-05-17 Issue 1504
+ -- If giving a solution failed (e.g. ill-typed)
+ -- we could try the next one.
+ -- However, currently @terms@ is always a singleton list.
+ -- Thus, the following @loop@ is not doing something very
+ -- meaningful.
+ loop [] = return (Left [], Just "")
+ loop (term : terms') = do
+ -- On exception, try next solution
+ flip catchError (const $ loop terms') $ do
+ exprs <- getsols term
+ reportSDoc "auto" 20 $ TCM.text "Trying solution " TCM.<+> TCM.prettyTCM exprs
+ giveress <- forM exprs $ \ (mi, expr) ->
+ case lookup mi riis of
+ Nothing ->
+ -- catchError
+ (giveExpr mi expr >> return (Nothing, Nothing))
+ -- (const retry)
+ -- (\_ -> return (Nothing, Just ("Failed to give expr for side solution of " ++ show mi)))
+ Just ii' -> do ae <- give ii' Nothing expr
+ mv <- lookupMeta mi
+ let scope = getMetaScope mv
+ ce <- abstractToConcreteEnv (makeEnv scope) ae
+ let cmnt = if ii' == ii then agsyinfo ticks else ""
+ return (Just (ii', show ce ++ cmnt), Nothing)
+ -- Andreas, 2015-05-17, Issue 1504
+ -- When Agsy produces an ill-typed solution, return nothing.
+ -- TODO: try other solution.
+ -- `catchError` const retry -- (return (Nothing, Nothing))
+ let msg = if length exprs == 1 then
+ Nothing
+ else
+ Just $ "Also gave solution(s) for hole(s)" ++
+ concatMap (\(mi', _) ->
+ if mi' == mi then "" else (" " ++ case lookup mi' riis of {Nothing -> show mi'; Just ii -> show ii})
+ ) exprs
+ let msgs = catMaybes $ msg : map snd giveress
+ msg' = case msgs of
+ [] -> Nothing
+ _ -> Just $ unlines msgs
+ return (Left $ catMaybes $ map fst giveress, msg')
MCaseSplit -> do
case thisdefinfo of
diff --git a/src/full/Agda/Auto/CaseSplit.hs b/src/full/Agda/Auto/CaseSplit.hs
index 5720314..30019f6 100644
--- a/src/full/Agda/Auto/CaseSplit.hs
+++ b/src/full/Agda/Auto/CaseSplit.hs
@@ -1,5 +1,5 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE Rank2Types #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Agda.Auto.CaseSplit where
diff --git a/src/full/Agda/Auto/Convert.hs b/src/full/Agda/Auto/Convert.hs
index a12e5dd..13718e4 100644
--- a/src/full/Agda/Auto/Convert.hs
+++ b/src/full/Agda/Auto/Convert.hs
@@ -1,5 +1,9 @@
{-# LANGUAGE CPP #-}
+#if __GLASGOW_HASKELL__ >= 710
+{-# LANGUAGE FlexibleContexts #-}
+#endif
+
module Agda.Auto.Convert where
import Control.Applicative hiding (getConst, Const(..))
@@ -462,7 +466,7 @@ fmLevel :: I.MetaId -> I.PlusLevel -> Bool
fmLevel m I.ClosedLevel{} = False
fmLevel m (I.Plus _ l) = case l of
I.MetaLevel m' _ -> m == m'
- I.NeutralLevel v -> fmExp m v
+ I.NeutralLevel _ v -> fmExp m v
I.BlockedLevel _ v -> fmExp m v
I.UnreducedLevel v -> fmExp m v
@@ -667,7 +671,7 @@ frommyClause (ids, pats, mrhs) = do
let (Just ndrop, name) = cdorigin cdef
ps' <- cnvps ndrop ps
let con = I.ConHead name Common.Inductive [] -- TODO: restore record fields!
- return (I.ConP con Nothing ps')
+ return (I.ConP con I.noConPatternInfo ps')
CSPatExp e -> do
e' <- frommyExp e {- renm e -} -- renaming before adding to clause below
return (I.DotP e')
diff --git a/src/full/Agda/Auto/NarrowingSearch.hs b/src/full/Agda/Auto/NarrowingSearch.hs
index 8e60324..89cb007 100644
--- a/src/full/Agda/Auto/NarrowingSearch.hs
+++ b/src/full/Agda/Auto/NarrowingSearch.hs
@@ -1,11 +1,10 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Rank2Types #-}
-{-# LANGUAGE ScopedTypeVariables #-}
--- {-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Rank2Types #-}
+{-# LANGUAGE ScopedTypeVariables #-}
module Agda.Auto.NarrowingSearch where
@@ -19,10 +18,10 @@ import Agda.Utils.Impossible
type Prio = Int
class Trav a blk | a -> blk where
- traverse :: Monad m => (forall b . Trav b blk => MM b blk -> m ()) -> a -> m ()
+ trav :: Monad m => (forall b . Trav b blk => MM b blk -> m ()) -> a -> m ()
instance Trav a blk => Trav (MM a blk) blk where
- traverse f me = f me
+ trav f me = f me
data Term blk = forall a . Trav a blk => Term a
diff --git a/src/full/Agda/Auto/SearchControl.hs b/src/full/Agda/Auto/SearchControl.hs
index ad7d69d..3121909 100644
--- a/src/full/Agda/Auto/SearchControl.hs
+++ b/src/full/Agda/Auto/SearchControl.hs
@@ -1,8 +1,7 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE UndecidableInstances #-}
module Agda.Auto.SearchControl where
@@ -350,33 +349,27 @@ prioTypecheck True = 0
-- ---------------------------------
instance Trav a blk => Trav [a] blk where
- traverse _ [] = return ()
- traverse f (x:xs) = traverse f x >> traverse f xs
+ trav _ [] = return ()
+ trav f (x:xs) = trav f x >> trav f xs
instance Trav (MId, CExp o) (RefInfo o) where
- traverse f (_, ce) = traverse f ce
+ trav f (_, ce) = trav f ce
instance Trav (TrBr a o) (RefInfo o) where
- traverse f (TrBr es _) = traverse f es
+ trav f (TrBr es _) = trav f es
instance Trav (Exp o) (RefInfo o) where
- traverse f e = case e of
- App _ _ _ args -> traverse f args
- Lam _ (Abs _ b) -> traverse f b
- Pi _ _ _ it (Abs _ ot) -> traverse f it >> traverse f ot
- Sort _ -> return ()
-
- AbsurdLambda{} -> return ()
-
+ trav f e = case e of
+ App _ _ _ args -> trav f args
+ Lam _ (Abs _ b) -> trav f b
+ Pi _ _ _ it (Abs _ ot) -> trav f it >> trav f ot
+ Sort _ -> return ()
+ AbsurdLambda{} -> return ()
instance Trav (ArgList o) (RefInfo o) where
- traverse _ ALNil = return ()
- traverse f (ALCons _ arg args) = traverse f arg >> traverse f args
-
- traverse f (ALProj eas _ _ as) = traverse f eas >> traverse f as
-
-
- traverse f (ALConPar args) = traverse f args
-
+ trav _ ALNil = return ()
+ trav f (ALCons _ arg args) = trav f arg >> trav f args
+ trav f (ALProj eas _ _ as) = trav f eas >> trav f as
+ trav f (ALConPar args) = trav f args
-- ---------------------------------
diff --git a/src/full/Agda/Auto/Syntax.hs b/src/full/Agda/Auto/Syntax.hs
index 849c382..2f997e0 100644
--- a/src/full/Agda/Auto/Syntax.hs
+++ b/src/full/Agda/Auto/Syntax.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ExistentialQuantification #-}
module Agda.Auto.Syntax where
diff --git a/src/full/Agda/Auto/Typecheck.hs b/src/full/Agda/Auto/Typecheck.hs
index f4284f0..037aaeb 100644
--- a/src/full/Agda/Auto/Typecheck.hs
+++ b/src/full/Agda/Auto/Typecheck.hs
@@ -1,7 +1,7 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE ScopedTypeVariables #-}
module Agda.Auto.Typecheck where
diff --git a/src/full/Agda/Compiler/CallCompiler.hs b/src/full/Agda/Compiler/CallCompiler.hs
index 6c3e441..2bd266f 100644
--- a/src/full/Agda/Compiler/CallCompiler.hs
+++ b/src/full/Agda/Compiler/CallCompiler.hs
@@ -75,7 +75,7 @@ callCompiler' cmd args = do
exitcode <- liftIO $ do
-- Ensure that the output has been read before waiting for the
-- process.
- E.evaluate (length errors)
+ _ <- E.evaluate (length errors)
waitForProcess p
case exitcode of
diff --git a/src/full/Agda/Compiler/Epic/Erasure.hs b/src/full/Agda/Compiler/Epic/Erasure.hs
index 3759940..154eb23 100644
--- a/src/full/Agda/Compiler/Epic/Erasure.hs
+++ b/src/full/Agda/Compiler/Epic/Erasure.hs
@@ -24,7 +24,7 @@ import Agda.Compiler.Epic.Interface
import Agda.TypeChecking.Monad.Base (TCM)
import qualified Agda.Syntax.Internal as SI
-import qualified Agda.Syntax.Common as SC
+import qualified Agda.Syntax.Common as Common
import Agda.TypeChecking.Monad (reportSDoc)
import Agda.TypeChecking.Pretty as P
@@ -133,20 +133,19 @@ initiate f@(EpicFun {funName = name, funQName = mqname}) = case mqname of
Nothing -> return ()
initialRels :: SI.Type -> Relevance -> [Relevance]
-initialRels ty rel =
- case SI.unEl ty of
- SI.Pi a b -> mkRel a : initialRels (SI.unAbs b) rel
- _ -> []
+initialRels ty rel = case SI.unEl ty of
+ SI.Pi a b -> mkRel a : initialRels (SI.unAbs b) rel
+ _ -> []
where
mkRel :: SI.Dom SI.Type -> Relevance
- mkRel a | ignoreForced (SC.getRelevance a) = Irr
- mkRel a = case SI.unEl (SC.unDom a) of
- SI.Sort _ -> Irr
- _ -> rel
-
-ignoreForced :: SC.Relevance -> Bool
-ignoreForced SC.Relevant = False
-ignoreForced _ = True
+ mkRel a | ignoreForced (Common.getRelevance a) = Irr
+ mkRel a = case SI.unEl (Common.unDom a) of
+ SI.Sort _ -> Irr
+ _ -> rel
+
+ignoreForced :: Common.Relevance -> Bool
+ignoreForced Common.Relevant = False
+ignoreForced _ = True
-- | Calculate if a variable is relevant in an expression
relevant :: (Functor m, Monad m) => Var -> Expr -> Erasure m Relevance
diff --git a/src/full/Agda/Compiler/Epic/ForceConstrs.hs b/src/full/Agda/Compiler/Epic/ForceConstrs.hs
index b658ea3..ec41aad 100644
--- a/src/full/Agda/Compiler/Epic/ForceConstrs.hs
+++ b/src/full/Agda/Compiler/Epic/ForceConstrs.hs
@@ -9,7 +9,7 @@ import Agda.Compiler.Epic.AuxAST
import Agda.Compiler.Epic.CompileState
import Agda.Compiler.Epic.Interface
-import qualified Agda.Syntax.Common as S
+import qualified Agda.Syntax.Common as Common
import qualified Agda.Syntax.Internal as T
import Agda.TypeChecking.Monad (TCM)
@@ -19,16 +19,16 @@ import Agda.Utils.Impossible
-- | Check which arguments are forced
makeForcedArgs :: T.Type -> ForcedArgs
makeForcedArgs (T.El _ term) = case term of
- T.Pi arg ab -> isRel arg : makeForcedArgs (T.unAbs ab)
- _ -> []
+ T.Pi arg ab -> isRel arg : makeForcedArgs (T.unAbs ab)
+ _ -> []
where
isRel :: T.Dom T.Type -> Forced
- isRel arg = case S.getRelevance arg of
- S.Relevant -> NotForced
- S.Irrelevant -> Forced
- S.UnusedArg -> Forced
- S.NonStrict -> Forced -- can never be executed
- S.Forced -> Forced -- It can be inferred
+ isRel arg = case Common.getRelevance arg of
+ Common.Relevant -> NotForced
+ Common.Irrelevant -> Forced
+ Common.UnusedArg -> Forced
+ Common.NonStrict -> Forced -- can never be executed
+ Common.Forced{} -> Forced -- It can be inferred
-- | Remove forced arguments from constructors and branches
forceConstrs :: [Fun] -> Compile TCM [Fun]
diff --git a/src/full/Agda/Compiler/Epic/Forcing.hs b/src/full/Agda/Compiler/Epic/Forcing.hs
index d7a2fad..d3b06c5 100644
--- a/src/full/Agda/Compiler/Epic/Forcing.hs
+++ b/src/full/Agda/Compiler/Epic/Forcing.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Agda.Compiler.Epic.Forcing where
diff --git a/src/full/Agda/Compiler/Epic/FromAgda.hs b/src/full/Agda/Compiler/Epic/FromAgda.hs
index d54842e..1bb545f 100644
--- a/src/full/Agda/Compiler/Epic/FromAgda.hs
+++ b/src/full/Agda/Compiler/Epic/FromAgda.hs
@@ -47,7 +47,6 @@ translateDefn msharp (n, defini) =
f@(Function{}) -> do
let projArgs = projectionArgs f
cc = fromMaybe __IMPOSSIBLE__ $ funCompiled f
- -- let projArgs = maybe 0 (pred . projIndex) (funProjection f)
ccs <- reverseCCBody projArgs <$> normaliseStatic cc
let len = (+ projArgs) . length . clausePats . head . funClauses $ f
toEta = arity (defType defini) - len
@@ -242,11 +241,6 @@ substTerm env term = case T.unSpine term of
del <- getDelayed q
def <- theDef <$> lift (getConstInfo q)
let nr = projectionArgs def
-{- MOVED to Signature.hs
- case def of
- Function{funProjection = Just p} -> pred $ projIndex p
- _ -> 0
- -}
f <- apps name . (replicate nr UNIT ++) <$> mapM (substTerm env . unArg) args
return $ case del of
True -> Lazy f
diff --git a/src/full/Agda/Compiler/Epic/Injection.hs b/src/full/Agda/Compiler/Epic/Injection.hs
index 2ce0887..0729bee 100644
--- a/src/full/Agda/Compiler/Epic/Injection.hs
+++ b/src/full/Agda/Compiler/Epic/Injection.hs
@@ -1,9 +1,6 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TypeOperators #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-{-# LANGUAGE OverlappingInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE PatternGuards #-}
module Agda.Compiler.Epic.Injection where
@@ -26,7 +23,7 @@ import Agda.Syntax.Literal
import Agda.TypeChecking.CompiledClause
import Agda.TypeChecking.Monad
import Agda.TypeChecking.Monad.Builtin
-import Agda.TypeChecking.Pretty hiding (empty)
+import Agda.TypeChecking.Pretty
import Agda.TypeChecking.Reduce
import Agda.TypeChecking.Substitute
import Agda.Utils.List
@@ -69,8 +66,8 @@ findInjection defs = do
replaceFunCC :: QName -> CompiledClauses -> Compile TCM ()
replaceFunCC name cc = lift $ do
- stSignature %= \sig -> sig {sigDefinitions = HM.adjust replaceDef name (sigDefinitions sig)}
- stImports %= \imp -> imp {sigDefinitions = HM.adjust replaceDef name (sigDefinitions imp)}
+ stSignature %= updateDefinition name replaceDef
+ stImports %= updateDefinition name replaceDef
where
replaceDef :: Definition -> Definition
replaceDef def = case theDef def of
@@ -123,7 +120,7 @@ substForDot = makeSubst 0 0 . reverse . calcDots
where
makeSubst i accum [] = raiseS (i + accum)
makeSubst i accum (True : ps) = makeSubst i (accum +1) ps
- makeSubst i accum (False : ps) = var (i + accum) :# makeSubst (i+1) accum ps
+ makeSubst i accum (False : ps) = consS (var $ i + accum) $ makeSubst (i+1) accum ps
calcDots = concatMap calcDots' . map namedArg
calcDots' p = case p of
@@ -186,8 +183,8 @@ litInt LitInt{} = True
litInt _ = False
insertAt :: (Nat,Term) -> Term -> Term
-insertAt (index, ins) =
- applySubst ([var i | i <- [0 .. index - 1]] ++# ins :# raiseS (index + 1))
+insertAt (index, ins) = applySubst $
+ [var i | i <- [0 .. index - 1]] ++# consS ins (raiseS $ index + 1)
solve :: [QName] -> [((QName, InjectiveFun), [(QName,QName)])] -> Compile TCM [(QName, InjectiveFun)]
solve newNames xs = do
@@ -216,7 +213,7 @@ solve newNames xs = do
let (hasTags, eqs) = Map.partition isTag (constrGroup tags)
isTag (IsTag _) = True
isTag _ = False
- forM (Map.toList hasTags) $ \ (c, tagged) -> case tagged of
+ forM_ (Map.toList hasTags) $ \ (c, tagged) -> case tagged of
IsTag tag -> putCon c tag
_ -> __IMPOSSIBLE__
case Map.toList eqs of
diff --git a/src/full/Agda/Compiler/Epic/Interface.hs b/src/full/Agda/Compiler/Epic/Interface.hs
index 876f7ce..c37ab6c 100644
--- a/src/full/Agda/Compiler/Epic/Interface.hs
+++ b/src/full/Agda/Compiler/Epic/Interface.hs
@@ -10,7 +10,7 @@ import Data.Function
import Data.Map(Map)
import Data.Monoid
import Data.Set (Set)
-import Data.Typeable
+import Data.Typeable ( Typeable )
import Agda.Syntax.Common (Nat)
import Agda.Syntax.Internal
diff --git a/src/full/Agda/Compiler/Epic/Static.hs b/src/full/Agda/Compiler/Epic/Static.hs
index bb91fe7..13fee87 100644
--- a/src/full/Agda/Compiler/Epic/Static.hs
+++ b/src/full/Agda/Compiler/Epic/Static.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
-- | Find the places where the builtin static is used and do some normalisation
-- there.
diff --git a/src/full/Agda/Compiler/JS/Compiler.hs b/src/full/Agda/Compiler/JS/Compiler.hs
index 7a758a1..37ec59c 100644
--- a/src/full/Agda/Compiler/JS/Compiler.hs
+++ b/src/full/Agda/Compiler/JS/Compiler.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE NamedFieldPuns #-}
module Agda.Compiler.JS.Compiler where
@@ -444,21 +444,6 @@ isSingleton t = case unEl t of
_ -> return (Nothing)
_ -> return (Nothing)
-{- OBSOLETE, see Signature.hs
-defProjection :: Definition -> Maybe (QName, Int)
-defProjection Defn { theDef = Function { funProjection = p } } = p
-defProjection _ = Nothing
--}
-
-{-
-args :: Maybe Projection -> Args -> TCM [Exp]
-args Nothing as =
- mapM (term . unArg) as
-args (Just p) as = do
- es <- mapM (term . unArg) as
- return (replicate (projIndex p - 1) Undefined ++ es)
--}
-
args :: Int -> Args -> TCM [Exp]
args n as = (replicate n Undefined ++) <$>
mapM (term . unArg) as
diff --git a/src/full/Agda/Compiler/MAlonzo/Compiler.hs b/src/full/Agda/Compiler/MAlonzo/Compiler.hs
index 335499b..7398c73 100644
--- a/src/full/Agda/Compiler/MAlonzo/Compiler.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Compiler.hs
@@ -1,6 +1,6 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE PatternGuards #-}
module Agda.Compiler.MAlonzo.Compiler where
@@ -111,11 +111,8 @@ imports = (++) <$> hsImps <*> imps where
((++) <$> importsForPrim <*> (List.map mazMod <$> mnames))
decl :: HS.ModuleName -> HS.ImportDecl
-#if MIN_VERSION_haskell_src_exts(1,16,0)
decl m = HS.ImportDecl dummy m True False False Nothing Nothing Nothing
-#else
- decl m = HS.ImportDecl dummy m True False Nothing Nothing Nothing
-#endif
+
mnames :: TCM [ModuleName]
mnames = (++) <$> (Set.elems <$> use stImportedModules)
<*> (List.map fst . iImportedModules <$> curIF)
@@ -149,7 +146,7 @@ definitions defs = do
definition :: Maybe CoinductionKit -> Definition -> TCM [HS.Decl]
-- ignore irrelevant definitions
{- Andreas, 2012-10-02: Invariant no longer holds
-definition kit (Defn Forced _ _ _ _ _ _ _ _) = __IMPOSSIBLE__
+definition kit (Defn Forced{} _ _ _ _ _ _ _ _) = __IMPOSSIBLE__
definition kit (Defn UnusedArg _ _ _ _ _ _ _ _) = __IMPOSSIBLE__
definition kit (Defn NonStrict _ _ _ _ _ _ _ _) = __IMPOSSIBLE__
-}
@@ -282,11 +279,8 @@ checkCover q ty n cs = do
(a, _) <- conArityAndPars c
Just (HsDefn _ hsc) <- compiledHaskell . defCompiledRep <$> getConstInfo c
let pat = HS.PApp (HS.UnQual $ HS.Ident hsc) $ genericReplicate a HS.PWildCard
-#if MIN_VERSION_haskell_src_exts(1,16,0)
return $ HS.Alt dummy pat (HS.UnGuardedRhs $ HS.unit_con) (HS.BDecls [])
-#else
- return $ HS.Alt dummy pat (HS.UnGuardedAlt $ HS.unit_con) (HS.BDecls [])
-#endif
+
cs <- mapM makeClause cs
let rhs = case cs of
[] -> fakeExp "()" -- There is no empty case statement in Haskell
@@ -336,11 +330,9 @@ argpatts ps0 bvs = evalStateT (mapM pat' ps0) bvs
pat (ProjP _ ) = lift $ typeError $ NotImplemented $ "Compilation of copatterns"
pat (VarP _ ) = do v <- gets head; modify tail; return v
pat (DotP _ ) = pat (VarP dummy) -- WHY NOT: return HS.PWildCard -- SEE ABOVE
-#if MIN_VERSION_haskell_src_exts(1,16,0)
+ pat (LitP (LitQName _ x)) = return $ litqnamepat x
pat (LitP l ) = return $ HS.PLit HS.Signless $ hslit l
-#else
- pat (LitP l ) = return $ HS.PLit $ hslit l
-#endif
+
pat p@(ConP c _ ps) = do
-- Note that irr is applied once for every subpattern, so in the
-- worst case it is quadratic in the size of the pattern. I
@@ -431,7 +423,7 @@ literal l = case l of
LitInt _ _ -> do toN <- bltQual "NATURAL" mazIntegerToNat
return $ HS.Var toN `HS.App` typed "Integer"
LitFloat _ _ -> return $ typed "Double"
- LitQName _ x -> litqname x
+ LitQName _ x -> return $ litqname x
_ -> return $ l'
where l' = HS.Lit $ hslit l
typed = HS.ExpTypeSig dummy l' . HS.TyCon . rtmQual
@@ -443,13 +435,25 @@ hslit l = case l of LitInt _ x -> HS.Int x
LitChar _ x -> HS.Char x
LitQName _ x -> __IMPOSSIBLE__
-litqname :: QName -> TCM HS.Exp
-litqname x = return $
+litqname :: QName -> HS.Exp
+litqname x =
HS.Con (HS.Qual mazRTE $ HS.Ident "QName") `HS.App`
HS.Lit (HS.Int n) `HS.App`
HS.Lit (HS.Int m) `HS.App`
(rtmError "primQNameType: not implemented") `HS.App`
- (rtmError "primQNameDefinition: not implemented")
+ (rtmError "primQNameDefinition: not implemented") `HS.App`
+ HS.Lit (HS.String $ show x )
+ where
+ NameId n m = nameId $ qnameName x
+
+litqnamepat :: QName -> HS.Pat
+litqnamepat x =
+ HS.PApp (HS.Qual mazRTE $ HS.Ident "QName")
+ [ HS.PLit HS.Signless (HS.Int n)
+ , HS.PLit HS.Signless (HS.Int m)
+ , HS.PWildCard
+ , HS.PWildCard
+ , HS.PWildCard]
where
NameId n m = nameId $ qnameName x
@@ -460,11 +464,7 @@ condecl q = do
cdecl :: QName -> Nat -> HS.ConDecl
cdecl q n = HS.ConDecl (unqhname "C" q)
-#if MIN_VERSION_haskell_src_exts(1,16,0)
[ HS.TyVar $ ihname "a" i | i <- [0 .. n - 1] ]
-#else
- [ HS.UnBangedTy $ HS.TyVar $ ihname "a" i | i <- [0 .. n - 1] ]
-#endif
tvaldecl :: QName
-> Induction
@@ -548,9 +548,9 @@ rteModule = ok $ parse $ unlines
, "{-# RULES \"coerce-id\" forall (x :: a) . mazCoerce x = x #-}"
, ""
, "-- Builtin QNames, the third field is for the type."
- , "data QName a b = QName { nameId, moduleId :: Integer, qnameType :: a, qnameDefinition :: b }"
+ , "data QName a b = QName { nameId, moduleId :: Integer, qnameType :: a, qnameDefinition :: b, qnameString :: String}"
, "instance Eq (QName a b) where"
- , " QName a b _ _ == QName c d _ _ = (a, b) == (c, d)"
+ , " QName a b _ _ _ == QName c d _ _ _ = (a, b) == (c, d)"
, ""
, "mazIncompleteMatch :: String -> a"
, "mazIncompleteMatch s = error (\"MAlonzo Runtime Error: incomplete pattern matching: \" ++ s)"
@@ -558,24 +558,13 @@ rteModule = ok $ parse $ unlines
where
parse :: String -> HS.ParseResult HS.Module
parse = HS.parseModuleWithMode
- HS.defaultParseMode{HS.extensions = [explicitForAll]}
+ HS.defaultParseMode
+ { HS.extensions = [ HS.EnableExtension HS.ExplicitForAll ] }
ok :: HS.ParseResult HS.Module -> HS.Module
ok (HS.ParseOk d) = d
ok HS.ParseFailed{} = __IMPOSSIBLE__
-explicitForAll :: HS.Extension
-explicitForAll =
--- GHC 7.0.1 cannot parse the following CPP conditional
--- error: missing binary operator before token "("
-#if MIN_VERSION_haskell_src_exts(1,14,0)
- HS.EnableExtension HS.ExplicitForAll
-#elif MIN_VERSION_haskell_src_exts(1,12,0)
- HS.ExplicitForAll
-#else
- HS.ExplicitForall
-#endif
-
compileDir :: TCM FilePath
compileDir = do
mdir <- optCompileDir <$> commandLineOptions
diff --git a/src/full/Agda/Compiler/MAlonzo/Pretty.hs b/src/full/Agda/Compiler/MAlonzo/Pretty.hs
index db08a8d..379589e 100644
--- a/src/full/Agda/Compiler/MAlonzo/Pretty.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Pretty.hs
@@ -1,7 +1,7 @@
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TemplateHaskell #-}
------------------------------------------------------------------------
-- Pretty-printing of Haskell modules
diff --git a/src/full/Agda/Compiler/MAlonzo/Primitives.hs b/src/full/Agda/Compiler/MAlonzo/Primitives.hs
index 5cfb6be..944f1ea 100644
--- a/src/full/Agda/Compiler/MAlonzo/Primitives.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Primitives.hs
@@ -240,6 +240,7 @@ primBody s = maybe unimplemented (either (hsVarUQ . HS.Ident) id <$>) $
-- Reflection
, "primQNameEquality" |-> rel "(==)" "MAlonzo.RTE.QName () ()"
+ , "primShowQName" |-> return "MAlonzo.RTE.qnameString"
, "primQNameType" |-> return "MAlonzo.RTE.qnameType"
, "primQNameDefinition" |-> return "MAlonzo.RTE.qnameDefinition"
diff --git a/src/full/Agda/Interaction/BasicOps.hs b/src/full/Agda/Interaction/BasicOps.hs
index 03296ff..938d1fa 100644
--- a/src/full/Agda/Interaction/BasicOps.hs
+++ b/src/full/Agda/Interaction/BasicOps.hs
@@ -1,9 +1,9 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TupleSections #-}
-{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE UndecidableInstances #-}
module Agda.Interaction.BasicOps where
@@ -136,7 +136,7 @@ give ii mr e = liftTCM $ do
reportSDoc "interaction.give" 10 $ TP.text "giving expression" TP.<+> prettyTCM e
reportSDoc "interaction.give" 50 $ TP.text $ show $ deepUnScope e
-- Try to give mi := e
- giveExpr mi e `catchError` \ err -> case err of
+ _ <- catchError (giveExpr mi e) $ \ err -> case err of
-- Turn PatternErr into proper error:
PatternErr{} -> do
err <- withInteractionId ii $ TP.text "Failed to give" TP.<+> prettyTCM e
@@ -277,44 +277,48 @@ instance Reify Constraint (OutputConstraint Expr Expr) where
return $ Guard o pid
reify (UnBlock m) = do
mi <- mvInstantiation <$> lookupMeta m
+ m' <- reify (MetaV m [])
case mi of
BlockedConst t -> do
e <- reify t
- m' <- reify (MetaV m [])
return $ Assign m' e
PostponedTypeCheckingProblem cl _ -> enterClosure cl $ \p -> case p of
CheckExpr e a -> do
a <- reify a
- m' <- reify (MetaV m [])
return $ TypedAssign m' e a
+ CheckLambda (Arg ai (xs, mt)) body target -> do
+ domType <- maybe (return underscore) reify mt
+ target <- reify target
+ let bs = TypedBindings noRange $ Arg (mapArgInfoColors (const []) ai) $
+ TBind noRange xs domType
+ e = A.Lam Info.exprNoRange (DomainFull bs) body
+ return $ TypedAssign m' e target
CheckArgs _ _ _ args t0 t1 _ -> do
t0 <- reify t0
t1 <- reify t1
- m <- reify (MetaV m [])
- return $ PostponedCheckArgs m (map (namedThing . unArg) args) t0 t1
+ return $ PostponedCheckArgs m' (map (namedThing . unArg) args) t0 t1
Open{} -> __IMPOSSIBLE__
OpenIFS{} -> __IMPOSSIBLE__
InstS{} -> __IMPOSSIBLE__
InstV{} -> __IMPOSSIBLE__
- reify (FindInScope m mcands) = do
- let cands = caseMaybe mcands [] (\ x -> x)
- m' <- reify (MetaV m [])
- ctxArgs <- getContextArgs
- t <- getMetaType m
- t' <- reify t
- cands' <- mapM (\(tm,ty) -> (,) <$> reify tm <*> reify ty) cands
- return $ FindInScopeOF m' t' cands' -- IFSTODO
+ reify (FindInScope m mcands) = FindInScopeOF
+ <$> (reify $ MetaV m [])
+ <*> (reify =<< getMetaType m)
+ <*> (forM (fromMaybe [] mcands) $ \ (tm, ty) -> do
+ (,) <$> reify tm <*> reify ty)
reify (IsEmpty r a) = IsEmptyType <$> reify a
+-- ASR TODO (28 December 2014): This function will be unnecessary when
+-- using a Pretty instance for OutputConstraint instead of the Show
+-- instance.
showComparison :: Comparison -> String
-showComparison CmpEq = " = "
-showComparison CmpLeq = " =< "
+showComparison cmp = " " ++ prettyShow cmp ++ " "
instance (Show a,Show b) => Show (OutputForm a b) where
show o =
case o of
OutputForm r 0 c -> show c ++ range r
- OutputForm r pid c -> "[" ++ show pid ++ "] " ++ show c ++ range r
+ OutputForm r pid c -> "[" ++ prettyShow pid ++ "] " ++ show c ++ range r
where
range r | null s = ""
| otherwise = " [ at " ++ s ++ " ]"
@@ -330,7 +334,7 @@ instance (Show a,Show b) => Show (OutputConstraint a b) where
show (CmpLevels cmp t t') = show t ++ showComparison cmp ++ show t'
show (CmpTeles cmp t t') = show t ++ showComparison cmp ++ show t'
show (CmpSorts cmp s s') = show s ++ showComparison cmp ++ show s'
- show (Guard o pid) = show o ++ " [blocked by problem " ++ show pid ++ "]"
+ show (Guard o pid) = show o ++ " [blocked by problem " ++ prettyShow pid ++ "]"
show (Assign m e) = show m ++ " := " ++ show e
show (TypedAssign m e a) = show m ++ " := " ++ show e ++ " :? " ++ show a
show (PostponedCheckArgs m es t0 t1) = show m ++ " := (_ : " ++ show t0 ++ ") " ++ unwords (map (paren . show) es)
@@ -338,9 +342,11 @@ instance (Show a,Show b) => Show (OutputConstraint a b) where
where paren s | elem ' ' s = "(" ++ s ++ ")"
| otherwise = s
show (IsEmptyType a) = "Is empty: " ++ show a
- show (FindInScopeOF s t cs) = "Resolve instance argument " ++ showCand (s,t) ++ ". Candidates: [" ++
- intercalate ", " (map showCand cs) ++ "]"
- where showCand (tm,ty) = show tm ++ " : " ++ show ty
+ show (FindInScopeOF s t cs) = "Resolve instance argument " ++ showCand (s,t) ++ ".\n Candidates:\n [ " ++
+ intercalate "\n , " (map showCand cs) ++ " ]"
+ where showCand (tm,ty) = indent 6 $ show tm ++ " : " ++ show ty
+ indent n s = intercalate ("\n" ++ replicate n ' ') (l:ls)
+ where l:ls = lines s
instance (ToConcrete a c, ToConcrete b d) =>
ToConcrete (OutputForm a b) (OutputForm c d) where
@@ -387,11 +393,7 @@ instance ToConcrete InteractionId C.Expr where
instance ToConcrete NamedMeta C.Expr where
toConcrete i = do
- return $ C.Underscore noRange (Just $ show i)
-
-judgToOutputForm :: Judgement a c -> OutputConstraint a c
-judgToOutputForm (HasType e t) = OfType e t
-judgToOutputForm (IsSort s t) = JustSort s
+ return $ C.Underscore noRange (Just $ prettyShow i)
getConstraints :: TCM [OutputForm C.Expr C.Expr]
getConstraints = liftTCM $ do
@@ -445,7 +447,7 @@ typeOfMetaMI norm mi =
withMetaInfo (getMetaInfo mv) $
rewriteJudg mv (mvJudgement mv)
where
- rewriteJudg :: MetaVariable -> Judgement Type MetaId ->
+ rewriteJudg :: MetaVariable -> Judgement MetaId ->
TCM (OutputConstraint Expr NamedMeta)
rewriteJudg mv (HasType i t) = do
ms <- getMetaNameSuggestion i
@@ -458,7 +460,7 @@ typeOfMetaMI norm mi =
[ TP.text "len =" TP.<+> TP.text (show $ length vs)
, TP.text "args =" TP.<+> prettyTCM vs
, TP.text "t =" TP.<+> prettyTCM t
- , TP.text "x =" TP.<+> TP.text (show x)
+ , TP.text "x =" TP.<+> TP.pretty x
]
]
OfType x <$> reify (t `piApply` permute (takeP (size vs) $ mvPermutation mv) vs)
@@ -483,9 +485,14 @@ typesOfHiddenMetas norm = liftTCM $ do
store <- Map.filterWithKey (openAndImplicit is) <$> getMetaStore
mapM (typeOfMetaMI norm) $ Map.keys store
where
- openAndImplicit is x (MetaVar{mvInstantiation = M.Open}) = x `notElem` is
- openAndImplicit is x (MetaVar{mvInstantiation = M.BlockedConst _}) = True
- openAndImplicit _ _ _ = False
+ openAndImplicit is x m =
+ case mvInstantiation m of
+ M.InstV{} -> False
+ M.InstS{} -> False
+ M.Open -> x `notElem` is
+ M.OpenIFS -> x `notElem` is -- OR: True !?
+ M.BlockedConst{} -> True
+ M.PostponedTypeCheckingProblem{} -> False
metaHelperType :: Rewrite -> InteractionId -> Range -> String -> TCM (OutputConstraint' Expr Expr)
metaHelperType norm ii rng s = case words s of
@@ -720,17 +727,14 @@ introTactic pmLambda ii = do
Left err -> return []
Right cov -> mapM showTCM $ concatMap (conName . scPats) $ splitClauses cov
+ introRec :: QName -> TCM [String]
introRec d = do
hfs <- getRecordFieldNames d
fs <- ifM showImplicitArguments
(return $ map unArg hfs)
(return [ unArg a | a <- hfs, getHiding a == NotHidden ])
- return
- [ concat $
- "record {" :
- intersperse ";" (map (\ f -> show f ++ " = ?") fs) ++
- ["}"]
- ]
+ let e = C.Rec noRange $ map (, C.QuestionMark noRange Nothing) fs
+ return [ prettyShow e ]
-- | Runs the given computation as if in an anonymous goal at the end
-- of the top-level module.
diff --git a/src/full/Agda/Interaction/CommandLine/CommandLine.hs b/src/full/Agda/Interaction/CommandLine.hs
index 37c9a30..0ae6ad5 100644
--- a/src/full/Agda/Interaction/CommandLine/CommandLine.hs
+++ b/src/full/Agda/Interaction/CommandLine.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE CPP #-}
-module Agda.Interaction.CommandLine.CommandLine where
+module Agda.Interaction.CommandLine where
import Control.Monad.Reader
import Control.Applicative
@@ -27,6 +27,7 @@ import Agda.TypeChecking.Constraints
import Agda.TypeChecking.Monad
import Agda.TypeChecking.Reduce
import Agda.TypeChecking.Errors
+import Agda.TypeChecking.Pretty ( PrettyTCM(prettyTCM) )
import Agda.TypeChecking.Substitute
import Agda.Utils.Except ( MonadError(catchError) )
@@ -116,12 +117,19 @@ interactionLoop doTypeCheck =
(|>) = (,)
continueAfter :: TCM a -> TCM (ExitCode b)
-continueAfter m = m >> return Continue
+continueAfter m = withCurrentFile $ do
+ m >> return Continue
+
+-- | Set 'envCurrentPath' to 'optInputFile'.
+withCurrentFile :: TCM a -> TCM a
+withCurrentFile cont = do
+ mpath <- getInputFile'
+ local (\ e -> e { envCurrentPath = mpath }) cont
loadFile :: TCM () -> [String] -> TCM ()
-loadFile reload [file] =
- do setInputFile file
- reload
+loadFile reload [file] = do
+ setInputFile file
+ withCurrentFile reload
loadFile _ _ = liftIO $ putStrLn ":load file"
showConstraints :: [String] -> TCM ()
@@ -193,17 +201,17 @@ actOnMeta _ _ = __IMPOSSIBLE__
giveMeta :: [String] -> TCM ()
-giveMeta s | length s >= 2 =
- do actOnMeta s (\ii -> \e -> give ii Nothing e)
- return ()
+giveMeta s | length s >= 2 = do
+ _ <- actOnMeta s (\ii -> \e -> give ii Nothing e)
+ return ()
giveMeta _ = liftIO $ putStrLn $ ": give" ++ " metaid expr"
refineMeta :: [String] -> TCM ()
-refineMeta s | length s >= 2 =
- do actOnMeta s (\ii -> \e -> refine ii Nothing e)
- return ()
+refineMeta s | length s >= 2 = do
+ _ <- actOnMeta s (\ii -> \e -> refine ii Nothing e)
+ return ()
refineMeta _ = liftIO $ putStrLn $ ": refine" ++ " metaid expr"
diff --git a/src/full/Agda/Interaction/EmacsCommand.hs b/src/full/Agda/Interaction/EmacsCommand.hs
index 0f6bd67..76cc29a 100644
--- a/src/full/Agda/Interaction/EmacsCommand.hs
+++ b/src/full/Agda/Interaction/EmacsCommand.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
------------------------------------------------------------------------
-- | Code for instructing Emacs to do things
diff --git a/src/full/Agda/Interaction/Exceptions.hs b/src/full/Agda/Interaction/Exceptions.hs
index 8b6e37f..0c46e82 100644
--- a/src/full/Agda/Interaction/Exceptions.hs
+++ b/src/full/Agda/Interaction/Exceptions.hs
@@ -8,12 +8,14 @@ import Control.Exception as E
import Agda.Syntax.Position
import Agda.Syntax.Parser ( ParseError(..) )
+import Agda.Utils.Pretty
+
handleParseException :: (ParseError -> IO a) -> ParseError -> IO a
handleParseException crash e = crash e
-- | Note that 'failOnException' only catches 'ParseError's.
-failOnException :: (Range -> String -> IO a) -> IO a -> IO a
+failOnException :: (Range -> Doc -> IO a) -> IO a -> IO a
failOnException h m = m `E.catch` handleParseException handler
where
- handler x = h (getRange x) (show x)
+ handler x = h (getRange x) (pretty x)
diff --git a/src/full/Agda/Interaction/Highlighting/Generate.hs b/src/full/Agda/Interaction/Highlighting/Generate.hs
index e073421..0c0fbb1 100644
--- a/src/full/Agda/Interaction/Highlighting/Generate.hs
+++ b/src/full/Agda/Interaction/Highlighting/Generate.hs
@@ -1,6 +1,6 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE RelaxedPolyRec #-}
+{-# LANGUAGE RelaxedPolyRec #-}
-- | Generates data used for precise syntax highlighting.
@@ -20,10 +20,29 @@ module Agda.Interaction.Highlighting.Generate
import Prelude hiding (null)
+import Control.Monad
+import Control.Monad.Trans
+import Control.Monad.State
+import Control.Monad.Reader
+import Control.Applicative
+import Control.Arrow ((***), first, second)
+
+import Data.Monoid
+import Data.Generics.Geniplate
+import Data.HashSet (HashSet)
+import qualified Data.HashSet as HSet
+import qualified Data.Map as Map
+import Data.Maybe
+import Data.List ((\\), isPrefixOf)
+import qualified Data.Foldable as Fold (toList, fold, foldMap)
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as IntMap
+
import Agda.Interaction.FindFile
import Agda.Interaction.Response (Response(Resp_HighlightingInfo))
import Agda.Interaction.Highlighting.Precise hiding (tests)
import Agda.Interaction.Highlighting.Range hiding (tests)
+
import qualified Agda.TypeChecking.Errors as E
import Agda.TypeChecking.MetaVars (isBlockedTerm)
import Agda.TypeChecking.Monad
@@ -31,9 +50,10 @@ import Agda.TypeChecking.Monad
import qualified Agda.TypeChecking.Monad as M
import Agda.TypeChecking.Pretty
import qualified Agda.TypeChecking.Reduce as R
+
import qualified Agda.Syntax.Abstract as A
import Agda.Syntax.Common (Delayed(..))
-import qualified Agda.Syntax.Common as SC
+import qualified Agda.Syntax.Common as Common
import qualified Agda.Syntax.Concrete as C
import qualified Agda.Syntax.Info as SI
import qualified Agda.Syntax.Internal as I
@@ -41,32 +61,16 @@ import qualified Agda.Syntax.Literal as L
import qualified Agda.Syntax.Parser as Pa
import qualified Agda.Syntax.Parser.Tokens as T
import qualified Agda.Syntax.Position as P
+
+import Agda.Utils.FileName
+import Agda.Utils.Functor
import Agda.Utils.Lens
import Agda.Utils.List
+import Agda.Utils.Maybe
+import Agda.Utils.Null
import Agda.Utils.TestHelpers
import Agda.Utils.HashMap (HashMap)
import qualified Agda.Utils.HashMap as HMap
-import Control.Monad
-import Control.Monad.Trans
-import Control.Monad.State
-import Control.Monad.Reader
-import Control.Applicative
-import Control.Arrow ((***), first, second)
-import Data.Monoid
-import Data.Generics.Geniplate
-import Agda.Utils.FileName
-import Data.HashSet (HashSet)
-import qualified Data.HashSet as HSet
-import qualified Data.Map as Map
-import Data.Maybe
-import Data.List ((\\), isPrefixOf)
-import qualified Data.Foldable as Fold (toList, fold, foldMap)
-import Data.IntMap (IntMap)
-import qualified Data.IntMap as IntMap
-
-import Agda.Utils.Functor
-import Agda.Utils.Maybe
-import Agda.Utils.Null
#include "undefined.h"
import Agda.Utils.Impossible
@@ -144,7 +148,7 @@ data Level
generateAndPrintSyntaxInfo :: A.Declaration -> Level -> TCM ()
generateAndPrintSyntaxInfo decl _ | P.noRange == P.getRange decl = return ()
generateAndPrintSyntaxInfo decl hlLevel = do
- file <- envCurrentPath <$> ask
+ file <- fromMaybe __IMPOSSIBLE__ <$> asks envCurrentPath
reportSLn "import.iface.create" 15 $
"Generating syntax info for " ++ filePath file ++ ' ' :
@@ -223,8 +227,10 @@ generateAndPrintSyntaxInfo decl hlLevel = do
bound n = nameToFile modMap file [] (A.nameConcrete n)
(\isOp -> mempty { aspect = Just $ Name (Just Bound) isOp })
(Just $ A.nameBindingSite n)
+
patsyn n = nameToFileA modMap file n True $ \isOp ->
- mempty { aspect = Just $ Name (Just $ Constructor SC.Inductive) isOp }
+ mempty { aspect = Just $ Name (Just $ Constructor Common.Inductive) isOp }
+
field m n = nameToFile modMap file m n
(\isOp -> mempty { aspect = Just $ Name (Just Field) isOp })
Nothing
@@ -232,6 +238,7 @@ generateAndPrintSyntaxInfo decl hlLevel = do
n
(\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })
Nothing
+
mod isTopLevelModule n =
nameToFile modMap file []
(A.nameConcrete n)
@@ -246,7 +253,7 @@ generateAndPrintSyntaxInfo decl hlLevel = do
-- Ulf, 2014-04-09: It would be nicer to have it on Named_ a, but
-- you can't have polymorphic functions in universeBi.
- getNamedArg :: SC.RString -> File
+ getNamedArg :: Common.RString -> File
getNamedArg x = singleton (rToR $ P.getRange x) mempty{ aspect = Just $ Name (Just Argument) False }
getLet :: A.LetBinding -> File
@@ -260,11 +267,11 @@ generateAndPrintSyntaxInfo decl hlLevel = do
getLam (A.DomainFull {}) = mempty
getTyped :: A.TypedBinding -> File
- getTyped (A.TBind _ xs _) = mconcat $ map bound xs
+ getTyped (A.TBind _ xs _) = mconcat $ map (bound . dget) xs
getTyped A.TLet{} = mempty
getPatSynArgs :: A.Declaration -> File
- getPatSynArgs (A.PatternSynDef _ xs _) = mconcat $ map (bound . SC.unArg) xs
+ getPatSynArgs (A.PatternSynDef _ xs _) = mconcat $ map (bound . Common.unArg) xs
getPatSynArgs _ = mempty
getPattern :: A.Pattern -> File
@@ -416,20 +423,20 @@ nameKinds hlLevel decl = do
declToKind (A.Pragma {}) = id
declToKind (A.ScopedDecl {}) = id
declToKind (A.Open {}) = id
- declToKind (A.PatternSynDef q _ _) = insert q (Constructor SC.Inductive)
+ declToKind (A.PatternSynDef q _ _) = insert q (Constructor Common.Inductive)
declToKind (A.FunDef _ q _ _) = insert q Function
declToKind (A.UnquoteDecl _ _ q _) = insert q Function
declToKind (A.DataSig _ q _ _) = insert q Datatype
declToKind (A.DataDef _ q _ cs) = \m ->
insert q Datatype $
foldr (\d -> insert (A.axiomName d)
- (Constructor SC.Inductive))
+ (Constructor Common.Inductive))
m cs
declToKind (A.RecSig _ q _ _) = insert q Record
declToKind (A.RecDef _ q _ c _ _ _) = insert q Record .
case c of
Nothing -> id
- Just q -> insert q (Constructor SC.Inductive)
+ Just q -> insert q (Constructor Common.Inductive)
-- | Generates syntax highlighting information for all constructors
-- occurring in patterns and expressions in the given declaration.
diff --git a/src/full/Agda/Interaction/Highlighting/HTML.hs b/src/full/Agda/Interaction/Highlighting/HTML.hs
index 3c33264..6126ab5 100644
--- a/src/full/Agda/Interaction/Highlighting/HTML.hs
+++ b/src/full/Agda/Interaction/Highlighting/HTML.hs
@@ -5,6 +5,13 @@
module Agda.Interaction.Highlighting.HTML
( generateHTML
+ -- Reused by PandocAgda
+ , defaultCSSFile
+ , generateHTMLWithPageGen
+ , generatePage
+ , page
+ , tokenStream
+ , code
) where
import Control.Applicative
@@ -57,7 +64,22 @@ defaultCSSFile = "Agda.css"
-- completed successfully.
generateHTML :: TCM ()
-generateHTML = do
+generateHTML = generateHTMLWithPageGen pageGen
+ where
+ pageGen dir mod hinfo = generatePage renderer dir mod
+ where
+ renderer css _ contents = page css mod $ code $ tokenStream contents hinfo
+
+-- | Prepare information for HTML page generation.
+--
+-- The page generator receives the file path of the module,
+-- the top level module name of the module
+-- and the highlighting information of the module.
+
+generateHTMLWithPageGen
+ :: (FilePath -> C.TopLevelModuleName -> CompressedFile -> TCM ()) -- ^ Page generator
+ -> TCM ()
+generateHTMLWithPageGen generatePage = do
options <- TCM.commandLineOptions
-- There is a default directory given by 'defaultHTMLDir'
@@ -87,15 +109,14 @@ generateHTML = do
modToFile :: C.TopLevelModuleName -> FilePath
modToFile m = render (pretty m) <.> "html"
--- | Generates an HTML file with a highlighted, hyperlinked version of
--- the given module.
+-- | Generates a highlighted, hyperlinked version of the given module.
generatePage
- :: FilePath -- ^ Directory in which to create files.
+ :: (FilePath -> FilePath -> String -> String) -- ^ Page renderer
+ -> FilePath -- ^ Directory in which to create files.
-> C.TopLevelModuleName -- ^ Module to be highlighted.
- -> HighlightingInfo -- ^ Syntax highlighting info for the module.
-> TCM ()
-generatePage dir mod highlighting = do
+generatePage renderpage dir mod = do
mf <- Map.lookup mod <$> use TCM.stModuleToSource
case mf of
Nothing -> __IMPOSSIBLE__
@@ -103,21 +124,20 @@ generatePage dir mod highlighting = do
contents <- liftIO $ UTF8.readTextFile $ filePath f
css <- maybe defaultCSSFile id . optCSSFile <$>
TCM.commandLineOptions
- let html = page css mod contents highlighting
+ let html = renderpage css (filePath f) contents
TCM.reportSLn "html" 1 $ "Generating HTML for " ++
render (pretty mod) ++
" (" ++ target ++ ")."
- liftIO $ UTF8.writeFile target (renderHtml html)
+ liftIO $ UTF8.writeFile target html
where target = dir </> modToFile mod
-- | Constructs the web page, including headers.
page :: FilePath -- ^ URL to the CSS file.
-> C.TopLevelModuleName -- ^ Module to be highlighted.
- -> String -- ^ The contents of the module.
- -> CompressedFile -- ^ Highlighting information.
-> Html
-page css modName contents info =
+ -> String
+page css modName pagecontent = renderHtml $
header (thetitle << render (pretty modName)
+++
meta ! [ httpequiv "Content-Type"
@@ -133,16 +153,15 @@ page css modName contents info =
, thetype "text/css"
])
+++
- body << pre << code contents info
+ body << pre << pagecontent
--- | Constructs the HTML displaying the code.
+-- | Constructs token stream ready to print.
-code :: String -- ^ The contents of the module.
+tokenStream
+ :: String -- ^ The contents of the module.
-> CompressedFile -- ^ Highlighting information.
- -> Html
-code contents info =
- mconcat $
- map (\(pos, s, mi) -> annotate pos mi (stringToHtml s)) $
+ -> [(Int, String, Aspects)] -- ^ (position, contents, info)
+tokenStream contents info =
map (\cs -> case cs of
(mi, (pos, _)) : _ ->
(pos, map (snd . snd) cs, maybe mempty id mi)
@@ -153,6 +172,12 @@ code contents info =
where
infoMap = toMap (decompress info)
+-- | Constructs the HTML displaying the code.
+
+code :: [(Int, String, Aspects)]
+ -> Html
+code = mconcat . map (\(pos, s, mi) -> annotate pos mi (stringToHtml s))
+ where
annotate :: Int -> Aspects -> Html -> Html
annotate pos mi = anchor ! attributes
where
diff --git a/src/full/Agda/Interaction/Highlighting/LaTeX.hs b/src/full/Agda/Interaction/Highlighting/LaTeX.hs
index 0363fdd..2adf0c6 100644
--- a/src/full/Agda/Interaction/Highlighting/LaTeX.hs
+++ b/src/full/Agda/Interaction/Highlighting/LaTeX.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ViewPatterns #-}
-- | Function for generating highlighted and aligned LaTeX from literate
diff --git a/src/full/Agda/Interaction/Highlighting/Precise.hs b/src/full/Agda/Interaction/Highlighting/Precise.hs
index 932dafa..66f8f56 100644
--- a/src/full/Agda/Interaction/Highlighting/Precise.hs
+++ b/src/full/Agda/Interaction/Highlighting/Precise.hs
@@ -47,7 +47,7 @@ import Data.Map (Map)
import qualified Data.Map as Map
import Data.Typeable (Typeable)
-import qualified Agda.Syntax.Common as C
+import qualified Agda.Syntax.Common as Common
import qualified Agda.Syntax.Concrete as SC
import Agda.Interaction.Highlighting.Range
@@ -72,16 +72,16 @@ data Aspect
-- | @NameKind@s are figured our during scope checking.
data NameKind
- = Bound -- ^ Bound variable.
- | Constructor C.Induction -- ^ Inductive or coinductive constructor.
+ = Bound -- ^ Bound variable.
+ | Constructor Common.Induction -- ^ Inductive or coinductive constructor.
| Datatype
- | Field -- ^ Record field.
+ | Field -- ^ Record field.
| Function
- | Module -- ^ Module name.
+ | Module -- ^ Module name.
| Postulate
- | Primitive -- ^ Primitive.
- | Record -- ^ Record type.
- | Argument -- ^ Named argument, like x in {x = v}
+ | Primitive -- ^ Primitive.
+ | Record -- ^ Record type.
+ | Argument -- ^ Named argument, like x in {x = v}
deriving (Eq, Show, Typeable)
-- | Other aspects, generated by type checking.
@@ -449,7 +449,7 @@ instance CoArbitrary File where
instance Arbitrary CompressedFile where
arbitrary = do
rs <- (\ns1 ns2 -> toRanges $ sort $
- ns1 ++ concatMap (\n -> [n, succ n]) ns2) <$>
+ ns1 ++ concatMap (\n -> [n, succ n]) (ns2 :: [Int])) <$>
arbitrary <*> arbitrary
CompressedFile <$> mapM (\r -> (,) r <$> arbitrary) rs
where
diff --git a/src/full/Agda/Interaction/Imports.hs b/src/full/Agda/Interaction/Imports.hs
index e193baa..02f1ca1 100644
--- a/src/full/Agda/Interaction/Imports.hs
+++ b/src/full/Agda/Interaction/Imports.hs
@@ -1,6 +1,10 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE TupleSections #-}
+#if __GLASGOW_HASKELL__ >= 710
+{-# LANGUAGE FlexibleContexts #-}
+#endif
+
{-| This module deals with finding imported modules and loading their
interface files.
-}
@@ -28,8 +32,6 @@ import System.FilePath ((</>))
import qualified Text.PrettyPrint.Boxes as Boxes
-import Paths_Agda (getDataFileName)
-
import qualified Agda.Syntax.Abstract as A
import qualified Agda.Syntax.Concrete as C
import Agda.Syntax.Abstract.Name
@@ -46,12 +48,12 @@ import Agda.TypeChecking.Monad.Base.KillRange -- killRange for Signature
import Agda.TypeChecking.Serialise
import Agda.TypeChecking.Telescope
import Agda.TypeChecking.Primitive
-import Agda.TypeChecking.Monad.Benchmark (billTop, reimburseTop)
import qualified Agda.TypeChecking.Monad.Benchmark as Bench
import Agda.TheTypeChecker
import Agda.Interaction.FindFile
+import {-# SOURCE #-} Agda.Interaction.InteractionTop (showOpenMetas)
import Agda.Interaction.Options
import qualified Agda.Interaction.Options.Lenses as Lens
import Agda.Interaction.Highlighting.Precise (HighlightingInfo)
@@ -131,7 +133,7 @@ scopeCheckImport x = do
" visited: " ++ intercalate ", " (map (render . pretty) visited)
-- Since scopeCheckImport is called from the scope checker,
-- we need to reimburse her account.
- i <- reimburseTop Bench.Scoping $ getInterface x
+ i <- Bench.billTo [] $ getInterface x
addImport x
return (iModuleName i `withRangesOfQ` mnameToConcrete x, iScope i)
@@ -179,11 +181,11 @@ typeCheckMain f = do
-- liftIO $ putStrLn $ "This is typeCheckMain " ++ show f
-- liftIO . putStrLn . show =<< getVerbosity
reportSLn "import.main" 10 $ "Importing the primitive modules."
- libpath <- liftIO $ getDataFileName "lib"
- reportSLn "import.main" 20 $ "Library path = " ++ show libpath
+ libdir <- liftIO defaultLibDir
+ reportSLn "import.main" 20 $ "Library dir = " ++ show libdir
-- To allow posulating the built-ins, check the primitive module
-- in unsafe mode
- bracket_ (gets $ Lens.getSafeMode) Lens.putSafeMode $ do
+ _ <- bracket_ (gets $ Lens.getSafeMode) Lens.putSafeMode $ do
Lens.putSafeMode False
-- Turn off import-chasing messages.
-- We have to modify the persistent verbosity setting, since
@@ -194,7 +196,7 @@ typeCheckMain f = do
withHighlightingLevel None $
getInterface_ =<< do
moduleName $ mkAbsolute $
- libpath </> "prim" </> "Agda" </> "Primitive.agda"
+ libdir </> "prim" </> "Agda" </> "Primitive.agda"
reportSLn "import.main" 10 $ "Done importing the primitive modules."
-- Now do the type checking via getInterface.
@@ -245,7 +247,7 @@ getInterface' x isMain = do
reportSLn "import.iface" 10 $ " Check for cycle"
checkForImportCycle
- uptodate <- billTop Bench.Import $ do
+ uptodate <- Bench.billTo [Bench.Import] $ do
ignore <- ignoreInterfaces
cached <- isCached file -- if it's cached ignoreInterfaces has no effect
-- to avoid typechecking a file more than once
@@ -279,7 +281,7 @@ getInterface' x isMain = do
else " New module. Let's check it out."
unless (visited || stateChangesIncluded) $ do
mergeInterface i
- billTop Bench.Highlighting $
+ Bench.billTo [Bench.Highlighting] $
ifTopLevelAndHighlightingLevelIs NonInteractive $
highlightFromInterface i file
@@ -324,7 +326,7 @@ getInterface' x isMain = do
let ifile = filePath $ toIFile file
h <- fmap snd <$> getInterfaceFileHashes ifile
mm <- getDecodedModule x
- (cached, mi) <- billTop Bench.Deserialization $ case mm of
+ (cached, mi) <- Bench.billTo [Bench.Deserialization] $ case mm of
Just mi ->
if Just (iFullHash mi) /= h
then do dropDecodedModule x
@@ -516,9 +518,10 @@ createInterface
-> C.TopLevelModuleName -- ^ The expected module name.
-> TCM (Interface, MaybeWarnings)
createInterface file mname =
- local (\e -> e { envCurrentPath = file }) $ do
+ local (\e -> e { envCurrentPath = Just file }) $ do
modFile <- use stModuleToSource
- fileTokenInfo <- billTop Bench.Highlighting $ generateTokenInfo file
+ fileTokenInfo <- Bench.billTo [Bench.Highlighting] $
+ generateTokenInfo file
stTokens .= fileTokenInfo
reportSLn "import.iface.create" 5 $
@@ -531,7 +534,7 @@ createInterface file mname =
previousHsImports <- getHaskellImports
-- Parsing.
- (pragmas, top) <- billTop Bench.Parsing $
+ (pragmas, top) <- Bench.billTo [Bench.Parsing] $
liftIO $ parseFile' moduleParser file
pragmas <- concat <$> concreteToAbstract_ pragmas
@@ -542,20 +545,20 @@ createInterface file mname =
mapM_ setOptionsFromPragma options
-- Scope checking.
- topLevel <- billTop Bench.Scoping $
+ topLevel <- Bench.billTo [Bench.Scoping] $
concreteToAbstract_ (TopLevel file top)
let ds = topLevelDecls topLevel
-- Highlighting from scope checker.
- billTop Bench.Highlighting $ do
+ Bench.billTo [Bench.Highlighting] $ do
ifTopLevelAndHighlightingLevelIs NonInteractive $ do
-- Generate and print approximate syntax highlighting info.
printHighlightingInfo fileTokenInfo
mapM_ (\ d -> generateAndPrintSyntaxInfo d Partial) ds
-- Type checking.
- billTop Bench.Typing $ checkDecls ds
+ Bench.billTo [Bench.Typing] $ checkDecls ds
-- Ulf, 2013-11-09: Since we're rethrowing the error, leave it up to the
-- code that handles that error to reset the state.
@@ -573,7 +576,7 @@ createInterface file mname =
tickN "metas" (fromIntegral n)
-- Highlighting from type checker.
- billTop Bench.Highlighting $ do
+ Bench.billTo [Bench.Highlighting] $ do
-- Move any remaining token highlighting to stSyntaxInfo.
toks <- use stTokens
@@ -591,13 +594,16 @@ createInterface file mname =
-- Serialization.
syntaxInfo <- use stSyntaxInfo
- i <- billTop Bench.Serialization $ do
+ i <- Bench.billTo [Bench.Serialization] $ do
buildInterface file topLevel syntaxInfo previousHsImports options
-- TODO: It would be nice if unsolved things were highlighted
-- after every mutual block.
- unsolvedMetas <- List.nub <$> (mapM getMetaRange =<< getOpenMetas)
+ openMetas <- getOpenMetas
+ unless (null openMetas) $ do
+ reportSLn "import.metas" 10 . unlines =<< showOpenMetas
+ unsolvedMetas <- List.nub <$> mapM getMetaRange openMetas
unsolvedConstraints <- getAllConstraints
interactionPoints <- getInteractionPoints
@@ -605,7 +611,7 @@ createInterface file mname =
printUnsolvedInfo
r <- if and [ null unsolvedMetas, null unsolvedConstraints, null interactionPoints ]
- then billTop Bench.Serialization $ do
+ then Bench.billTo [Bench.Serialization] $ do
-- The file was successfully type-checked (and no warnings were
-- encountered), so the interface should be written out.
let ifile = filePath $ toIFile file
@@ -655,7 +661,10 @@ buildInterface file topLevel syntaxInfo previousHsImports pragmas = do
ms <- getImports
mhs <- mapM (\ m -> (m,) <$> moduleHash m) $ Set.toList ms
hsImps <- getHaskellImports
- patsyns <- getPatternSyns
+ -- Andreas, 2015-02-09 kill ranges in pattern synonyms before
+ -- serialization to avoid error locations pointing to external files
+ -- when expanding a pattern synoym.
+ patsyns <- killRange <$> getPatternSyns
h <- liftIO $ hashFile file
let builtin' = Map.mapWithKey (\ x b -> (x,) . primFunName <$> b) builtin
reportSLn "import.iface" 7 " instantiating all meta variables"
diff --git a/src/full/Agda/Interaction/InteractionTop.hs b/src/full/Agda/Interaction/InteractionTop.hs
index c956729..d49795e 100644
--- a/src/full/Agda/Interaction/InteractionTop.hs
+++ b/src/full/Agda/Interaction/InteractionTop.hs
@@ -1,21 +1,22 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Rank2Types #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TupleSections #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
{-# OPTIONS -fno-cse #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Rank2Types #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TupleSections #-}
+
module Agda.Interaction.InteractionTop
( module Agda.Interaction.InteractionTop
)
where
+import Prelude hiding (null)
+
import Control.Applicative hiding (empty)
import qualified Control.Exception as E
import Control.Monad.Identity
@@ -25,7 +26,7 @@ import Control.Monad.State
import qualified Data.Char as Char
import Data.Foldable (Foldable)
import Data.Function
-import Data.List as List
+import Data.List as List hiding (null)
import Data.Maybe
import Data.Map (Map)
import qualified Data.Map as Map
@@ -58,6 +59,7 @@ import Agda.Syntax.Scope.Base
import Agda.Interaction.FindFile
import Agda.Interaction.Options
+import Agda.Interaction.Options.Lenses as Lenses
import Agda.Interaction.MakeCase
import Agda.Interaction.Response hiding (Function, ExtendedLambda)
import qualified Agda.Interaction.Response as R
@@ -84,7 +86,9 @@ import Agda.Utils.FileName
import Agda.Utils.Hash
import qualified Agda.Utils.HashMap as HMap
import Agda.Utils.Lens
+import Agda.Utils.Maybe
import Agda.Utils.Monad
+import Agda.Utils.Null
import Agda.Utils.Pretty
import Agda.Utils.String
import Agda.Utils.Time
@@ -217,7 +221,7 @@ runInteraction (IOTCM current highlighting highlightingMethod cmd)
when (not (independent cmd) && Just current /= (fst <$> cf)) $
lift $ typeError $ GenericError "Error: First load the file."
- interpret cmd
+ withCurrentFile $ interpret cmd
cf <- gets theCurrentFile
when (Just current == (fst <$> cf)) $
@@ -234,7 +238,10 @@ runInteraction (IOTCM current highlighting highlightingMethod cmd)
-- If an independent command fails we should reset theCurrentFile (Issue853).
let sErr | independent cmd = s { theCurrentFile = Nothing }
| otherwise = s
- (x, s') <- lift (runStateT m s `catchError_` \e -> runStateT (h e) sErr)
+ (x, s') <- lift $ do
+ disableDestructiveUpdate (runStateT m s)
+ `catchError_` \ e ->
+ runStateT (h e) sErr
put s'
return x
@@ -246,8 +253,9 @@ runInteraction (IOTCM current highlighting highlightingMethod cmd)
-- | Handle nasty errors like stack space overflow (issue 637)
-- We assume that the input action handles other kind of errors.
handleNastyErrors :: CommandM () -> CommandM ()
- handleNastyErrors m = commandMToIO $ \toIO ->
- toIO m `E.catch` (toIO . handleErr . Exception noRange . (show :: E.SomeException -> String))
+ handleNastyErrors m = commandMToIO $ \ toIO ->
+ toIO m `E.catch` \ (e :: E.SomeException) ->
+ toIO $ handleErr $ Exception noRange $ text $ show e
-- | Displays an error and instructs Emacs to jump to the site of the
-- error. Because this function may switch the focus to another file
@@ -517,31 +525,11 @@ interpret Cmd_constraints =
display_info . Info_Constraints . unlines . map show =<< lift B.getConstraints
interpret Cmd_metas = do -- CL.showMetas []
- ims <- lift $ B.typesOfVisibleMetas B.AsIs
- -- Show unsolved implicit arguments simplified.
- hms <- lift $ B.typesOfHiddenMetas B.Simplified
- if not $ null ims && null hms
- then do
- di <- lift $ forM ims $ \i -> B.withInteractionId (B.outputFormId $ B.OutputForm noRange 0 i) (showATop i)
- dh <- lift $ mapM showA' hms
- display_info $ Info_AllGoals $ unlines $ di ++ dh
- else do
- cs <- lift B.getConstraints
- if null cs
- then display_info $ Info_AllGoals ""
- else interpret Cmd_constraints
- where
- metaId (B.OfType i _) = i
- metaId (B.JustType i) = i
- metaId (B.JustSort i) = i
- metaId (B.Assign i e) = i
- metaId _ = __IMPOSSIBLE__
- showA' :: B.OutputConstraint A.Expr NamedMeta -> TCM String
- showA' m = do
- let i = nmid $ metaId m
- r <- getMetaRange i
- d <- B.withMetaId i (showATop m)
- return $ d ++ " [ at " ++ show r ++ " ]"
+ ms <- lift $ showOpenMetas
+ -- If we do not have open metas, but open constaints, display those.
+ ifM (return (null ms) `and2M` do not . null <$> lift B.getConstraints)
+ {-then-} (interpret Cmd_constraints)
+ {-else-} (display_info $ Info_AllGoals $ unlines ms)
interpret (Cmd_show_module_contents_toplevel norm s) =
liftCommandMT B.atTopLevel $ showModuleContents norm noRange s
@@ -606,7 +594,7 @@ interpret (Cmd_load_highlighting_info source) = do
return Nothing
mapM_ putResponse resp
-interpret (Cmd_highlight ii rng s) = withCurrentFile $ do
+interpret (Cmd_highlight ii rng s) = do
scope <- getOldInteractionScope ii
removeOldInteractionScope ii
handle $ do
@@ -647,7 +635,8 @@ interpret (Cmd_intro pmLambda ii rng _) = do
]
interpret (Cmd_refine_or_intro pmLambda ii r s) = interpret $
- (if null s then Cmd_intro pmLambda else Cmd_refine) ii r s
+ let s' = trim s
+ in (if null s' then Cmd_intro pmLambda else Cmd_refine) ii r s'
interpret (Cmd_auto ii rng s) = do
-- Andreas, 2014-07-05 Issue 1226:
@@ -762,10 +751,33 @@ interpret (Cmd_compute ignore ii rng s) = do
interpret Cmd_show_version = display_info Info_Version
-type GoalCommand = InteractionId -> Range -> String -> Interaction
+-- | Print open metas nicely.
+showOpenMetas :: TCM [String]
+showOpenMetas = do
+ ims <- B.typesOfVisibleMetas B.AsIs
+ di <- forM ims $ \ i ->
+ B.withInteractionId (B.outputFormId $ B.OutputForm noRange 0 i) $
+ showATop i
+ -- Show unsolved implicit arguments simplified.
+ dh <- mapM showA' =<< B.typesOfHiddenMetas B.Simplified
+ return $ di ++ dh
+ where
+ metaId (B.OfType i _) = i
+ metaId (B.JustType i) = i
+ metaId (B.JustSort i) = i
+ metaId (B.Assign i e) = i
+ metaId _ = __IMPOSSIBLE__
+ showA' :: B.OutputConstraint A.Expr NamedMeta -> TCM String
+ showA' m = do
+ let i = nmid $ metaId m
+ r <- getMetaRange i
+ d <- B.withMetaId i (showATop m)
+ return $ d ++ " [ at " ++ show r ++ " ]"
+
--- | @cmd_load' m includes cmd cmd2@ loads the module in file @m@,
--- using @includes@ as the include directories.
+-- | @cmd_load' file includes unsolvedOk cmd@
+-- loads the module in file @file@,
+-- using @includes@ as the include directories.
--
-- If type checking completes without any exceptions having been
-- encountered then the command @cmd r@ is executed, where @r@ is the
@@ -778,7 +790,7 @@ cmd_load' :: FilePath -> [FilePath]
cmd_load' file includes unsolvedOK cmd = do
f <- liftIO $ absolute file
ex <- liftIO $ doesFileExist $ filePath f
- lift $ setIncludeDirs includes $
+ lift $ TM.setIncludeDirs includes $
if ex then ProjectRoot f else CurrentDir
-- Forget the previous "current file" and interaction points.
@@ -795,12 +807,9 @@ cmd_load' file includes unsolvedOK cmd = do
opts <- lift $ commandLineOptions
defaultOptions <- gets optionsOnReload
setCommandLineOptions' $
- defaultOptions { optIncludeDirs = optIncludeDirs opts
- , optPragmaOptions =
- (optPragmaOptions defaultOptions)
- { optAllowUnsolved = unsolvedOK
- }
- }
+ Lenses.setIncludeDirs (optIncludeDirs opts) $
+ mapPragmaOptions (\ o -> o { optAllowUnsolved = unsolvedOK }) $
+ defaultOptions
-- Reset the state, preserving options and decoded modules. Note
-- that if the include directories have changed, then the decoded
@@ -828,10 +837,11 @@ cmd_load' file includes unsolvedOK cmd = do
cmd ok
+-- | Set 'envCurrentPath' to 'theCurrentFile', if any.
withCurrentFile :: CommandM a -> CommandM a
withCurrentFile m = do
- Just (file, _) <- gets $ theCurrentFile
- local (\e -> e { envCurrentPath = file }) m
+ mfile <- fmap fst <$> gets theCurrentFile
+ local (\ e -> e { envCurrentPath = mfile }) m
-- | Available backends.
@@ -857,8 +867,12 @@ give_gen
-> String
-> GiveRefine
-> CommandM ()
-give_gen ii rng s giveRefine = withCurrentFile $ do
+give_gen ii rng s0 giveRefine = do
+ let s = trim s0
lift $ reportSLn "interaction.give" 20 $ "give_gen " ++ s
+ -- Andreas, 2015-02-26 if string is empty do nothing rather
+ -- than giving a parse error.
+ unless (null s) $ do
let give_ref =
case giveRefine of
Give -> B.give
@@ -981,7 +995,7 @@ showModuleContents :: B.Rewrite -> Range -> String -> CommandM ()
showModuleContents norm rng s = do
(modules, types) <- lift $ B.moduleContents norm rng s
types' <- lift $ forM types $ \ (x, t) -> do
- t <- prettyTCM t
+ t <- TCP.prettyTCM t
return (show x, text ":" <+> t)
display_info $ Info_ModuleContents $
text "Modules" $$
@@ -1021,7 +1035,7 @@ whyInScope s = do
where
asVar :: TCM Doc
asVar = do
- TCP.text "* a variable bound at" TCP.<+> prettyTCM (nameBindingSite $ localVar x)
+ TCP.text "* a variable bound at" TCP.<+> TCP.prettyTCM (nameBindingSite $ localVar x)
shadowing :: LocalVar -> TCM Doc
shadowing LocalVar{} = TCP.text "shadowing"
shadowing ShadowedVar{} = TCP.text "in conflict with"
@@ -1050,20 +1064,20 @@ whyInScope s = do
TCP.nest 2 (pWhy (nameBindingSite $ qnameName $ mnameToQName $ amodName a) (amodLineage a))
pWhy :: Range -> WhyInScope -> TCM Doc
- pWhy r Defined = TCP.text "- its definition at" TCP.<+> prettyTCM r
+ pWhy r Defined = TCP.text "- its definition at" TCP.<+> TCP.prettyTCM r
pWhy r (Opened (C.QName x) w) | isNoName x = pWhy r w
pWhy r (Opened m w) =
TCP.text "- the opening of"
TCP.<+> TCP.text (show m)
TCP.<+> TCP.text "at"
- TCP.<+> prettyTCM (getRange m)
+ TCP.<+> TCP.prettyTCM (getRange m)
TCP.$$
pWhy r w
pWhy r (Applied m w) =
TCP.text "- the application of"
TCP.<+> TCP.text (show m)
TCP.<+> TCP.text "at"
- TCP.<+> prettyTCM (getRange m)
+ TCP.<+> TCP.prettyTCM (getRange m)
TCP.$$
pWhy r w
diff --git a/src/full/Agda/Interaction/InteractionTop.hs-boot b/src/full/Agda/Interaction/InteractionTop.hs-boot
new file mode 100644
index 0000000..41d5e1e
--- /dev/null
+++ b/src/full/Agda/Interaction/InteractionTop.hs-boot
@@ -0,0 +1,5 @@
+module Agda.Interaction.InteractionTop where
+
+import Agda.TypeChecking.Monad.Base (TCM)
+
+showOpenMetas :: TCM [String]
diff --git a/src/full/Agda/Interaction/MakeCase.hs b/src/full/Agda/Interaction/MakeCase.hs
index 2e6775c..fbb9cb5 100644
--- a/src/full/Agda/Interaction/MakeCase.hs
+++ b/src/full/Agda/Interaction/MakeCase.hs
@@ -1,6 +1,6 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE DoAndIfThenElse #-}
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE TupleSections #-}
module Agda.Interaction.MakeCase where
@@ -28,6 +28,7 @@ import Agda.TypeChecking.Substitute
import Agda.TypeChecking.Irrelevance
import Agda.TheTypeChecker
+import Agda.Interaction.Options
import Agda.Interaction.BasicOps
import Agda.Utils.Functor
@@ -164,18 +165,24 @@ makeCase hole rng s = withInteractionId hole $ do
let vars = words s
if null vars then do
-- split result
- (newPats, sc) <- fixTarget (clauseToSplitClause clause)
- res <- splitResult f sc
- scs <- case res of
- Nothing -> if newPats then return [sc] else
- typeError $ GenericError $ "Cannot split on result here"
- Just cov -> mapM (snd <.> fixTarget) $ splitClauses cov
+ (newPats, sc) <- fixTarget $ clauseToSplitClause clause
+ -- Andreas, 2015-05-05 If we introduced new function arguments
+ -- do not split on result. This might be more what the user wants.
+ -- To split on result, he can then C-c C-c again.
+ scs <- if newPats then return [sc] else do
+ res <- splitResult f sc
+ case res of
+ Nothing -> typeError $ GenericError $ "Cannot split on result here"
+ Just cov -> ifNotM (optCopatterns <$> pragmaOptions) failNoCop $ {-else-} do
+ mapM (snd <.> fixTarget) $ splitClauses cov
(casectxt,) <$> mapM (makeAbstractClause f) scs
else do
-- split on variables
vars <- parseVariables hole rng vars
(casectxt,) <$> split f vars clause
where
+ failNoCop = typeError $ GenericError $
+ "OPTION --copatterns needed to split on result here"
split :: QName -> [Nat] -> Clause -> TCM [A.Clause]
split f [] clause =
(:[]) <$> makeAbstractClause f (clauseToSplitClause clause)
diff --git a/src/full/Agda/Interaction/Monad.hs b/src/full/Agda/Interaction/Monad.hs
index 089fc92..9edb2fe 100644
--- a/src/full/Agda/Interaction/Monad.hs
+++ b/src/full/Agda/Interaction/Monad.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TypeSynonymInstances #-}
module Agda.Interaction.Monad where
diff --git a/src/full/Agda/Interaction/Options.hs b/src/full/Agda/Interaction/Options.hs
index 3249c26..5ee7e02 100644
--- a/src/full/Agda/Interaction/Options.hs
+++ b/src/full/Agda/Interaction/Options.hs
@@ -1,10 +1,5 @@
{-# LANGUAGE CPP #-}
-#if __GLASGOW_HASKELL__ <= 706
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE StandaloneDeriving #-}
-#endif
-
module Agda.Interaction.Options
( CommandLineOptions(..)
, PragmaOptions(..)
@@ -26,40 +21,51 @@ module Agda.Interaction.Options
, mapFlag
, usage
, tests
+ , defaultLibDir
+ -- Reused by PandocAgda
+ , inputFlag
+ , standardOptions
+ , getOptSimple
) where
import Control.Monad ( when )
-import Data.Maybe ( isJust )
+
+-- base-4.7 defines the Functor instances for OptDescr and ArgDescr
+#if !(MIN_VERSION_base(4,7,0))
+import Data.Orphans ()
+#endif
+
+import Data.Maybe
import Data.List ( isSuffixOf , intercalate )
-import System.Console.GetOpt ( getOpt, usageInfo, ArgOrder(ReturnInOrder)
+import System.Console.GetOpt ( getOpt', usageInfo, ArgOrder(ReturnInOrder)
, OptDescr(..), ArgDescr(..)
)
+import System.Directory ( doesDirectoryExist )
+
+import Text.EditDistance
import Agda.Termination.CutOff ( CutOff(..) )
import Agda.Utils.TestHelpers ( runTests )
import Agda.Utils.QuickCheck ( quickCheck' )
-import Agda.Utils.FileName ( AbsolutePath )
-import Agda.Utils.Monad ( readM )
-import Agda.Utils.List ( wordsBy )
+import Agda.Utils.FileName ( absolute, AbsolutePath, filePath )
+import Agda.Utils.Monad ( ifM, readM )
+import Agda.Utils.List ( groupOn, wordsBy )
import Agda.Utils.String ( indent )
import Agda.Utils.Trie ( Trie )
import qualified Agda.Utils.Trie as Trie
import Agda.Utils.Except ( MonadError(catchError, throwError) )
+-- Paths_Agda.hs is in $(BUILD_DIR)/build/autogen/.
+import Paths_Agda ( getDataFileName )
+
-- | This should probably go somewhere else.
isLiterate :: FilePath -> Bool
isLiterate file = ".lagda" `isSuffixOf` file
-- OptDescr is a Functor --------------------------------------------------
--- base-4.7 defines these
-#if !(MIN_VERSION_base(4,7,0))
-deriving instance Functor OptDescr
-deriving instance Functor ArgDescr
-#endif
-
type Verbosity = Trie String Int
type IncludeDirs = Either [FilePath] [AbsolutePath]
@@ -390,8 +396,10 @@ compileFlag o = return $ o { optCompile = True }
compileFlagNoMain :: Flag CommandLineOptions
compileFlagNoMain o = return $ o { optCompileNoMain = True }
+-- The Epic backend has been disabled. See Issue 1481.
compileEpicFlag :: Flag CommandLineOptions
-compileEpicFlag o = return $ o { optEpicCompile = True}
+-- compileEpicFlag o = return $ o { optEpicCompile = True}
+compileEpicFlag o = throwError "the Epic backend has been disabled"
compileJSFlag :: Flag CommandLineOptions
compileJSFlag o = return $ o { optJSCompile = True }
@@ -404,8 +412,10 @@ ghcFlag :: String -> Flag CommandLineOptions
ghcFlag f o = return $ o { optGhcFlags = optGhcFlags o ++ [f] }
-- NOTE: Quadratic in number of flags.
+-- The Epic backend has been disabled. See Issue 1481.
epicFlagsFlag :: String -> Flag CommandLineOptions
-epicFlagsFlag s o = return $ o { optEpicFlags = optEpicFlags o ++ [s] }
+-- epicFlagsFlag s o = return $ o { optEpicFlags = optEpicFlags o ++ [s] }
+epicFlagsFlag s o = throwError "the Epic backend has been disabled"
htmlFlag :: Flag CommandLineOptions
htmlFlag o = return $ o { optGenerateHTML = True }
@@ -459,14 +469,23 @@ standardOptions =
"compile program using the MAlonzo backend (experimental)"
, Option [] ["no-main"] (NoArg compileFlagNoMain)
"when compiling using the MAlonzo backend (experimental), do not treat the requested module as the main module of a program"
- , Option [] ["epic"] (NoArg compileEpicFlag) "compile program using the Epic backend"
+
+ -- The Epic backend has been disabled. See Issue 1481.
+ , Option [] ["epic"] (NoArg compileEpicFlag)
+ -- "compile program using the Epic backend"
+ "the Epic backend has been disabled"
+
, Option [] ["js"] (NoArg compileJSFlag) "compile program using the JS backend"
, Option [] ["compile-dir"] (ReqArg compileDirFlag "DIR")
("directory for compiler output (default: the project root)")
, Option [] ["ghc-flag"] (ReqArg ghcFlag "GHC-FLAG")
"give the flag GHC-FLAG to GHC when compiling using MAlonzo"
+
+ -- The Epic backend has been disabled. See Issue 1481.
, Option [] ["epic-flag"] (ReqArg epicFlagsFlag "EPIC-FLAG")
- "give the flag EPIC-FLAG to Epic when compiling using Epic"
+ -- "give the flag EPIC-FLAG to Epic when compiling using Epic"
+ "the Epic backend has been disabled"
+
, Option [] ["test"] (NoArg runTestsFlag)
"run internal test suite"
, Option [] ["vim"] (NoArg vimFlag)
@@ -552,19 +571,59 @@ pragmaOptions =
standardOptions_ :: [OptDescr ()]
standardOptions_ = map (fmap $ const ()) standardOptions
--- | Don't export
-parseOptions' ::
- [String] -> [OptDescr (Flag opts)] -> (String -> Flag opts) -> Flag opts
-parseOptions' argv opts fileArg = \defaults ->
- case getOpt (ReturnInOrder fileArg) opts argv of
- (o,_,[]) -> foldl (>>=) (return defaults) o
- (_,_,errs) -> throwError $ concat errs
+-- | Simple interface for System.Console.GetOpt
+-- Could be moved to Agda.Utils.Options (does not exist yet)
+getOptSimple
+ :: [String] -- ^ command line argument words
+ -> [OptDescr (Flag opts)] -- ^ options handlers
+ -> (String -> Flag opts) -- ^ handler of non-options (only one is allowed)
+ -> Flag opts -- ^ combined opts data structure transformer
+getOptSimple argv opts fileArg = \ defaults ->
+ case getOpt' (ReturnInOrder fileArg) opts argv of
+ (o, _, [] , [] ) -> foldl (>>=) (return defaults) o
+ (_, _, unrecognized, errs) -> throwError $ umsg ++ emsg
+
+ where
+ ucap = "Unrecognized " ++ plural unrecognized "option" ++ ":"
+ ecap = plural errs "Option error" ++ ":"
+ umsg = if null unrecognized then "" else unlines $
+ ucap : map suggest unrecognized
+ emsg = if null errs then "" else unlines $
+ ecap : errs
+ plural [_] x = x
+ plural _ x = x ++ "s"
+
+ -- Suggest alternatives that are at most 3 typos away
+
+ longopts :: [String]
+ longopts = map ("--" ++) $ concat $ map (\ (Option _ long _ _) -> long) opts
+
+ dist :: String -> String -> Int
+ dist s t = restrictedDamerauLevenshteinDistance defaultEditCosts s t
+
+ close :: String -> String -> Maybe (Int, String)
+ close s t = let d = dist s t in if d <= 3 then Just (d, t) else Nothing
+
+ closeopts :: String -> [(Int, String)]
+ closeopts s = mapMaybe (close s) longopts
+
+ alts :: String -> [[String]]
+ alts s = map (map snd) $ groupOn fst $ closeopts s
+
+ suggest :: String -> String
+ suggest s = case alts s of
+ [] -> s
+ as : _ -> s ++ " (did you mean " ++ sugs as ++ " ?)"
+
+ sugs :: [String] -> String
+ sugs [a] = a
+ sugs as = "any of " ++ intercalate " " as
-- | Parse the standard options.
parseStandardOptions :: [String] -> Either String CommandLineOptions
parseStandardOptions argv =
checkOpts =<<
- parseOptions' argv standardOptions inputFlag defaultOptions
+ getOptSimple argv standardOptions inputFlag defaultOptions
-- | Parse options from an options pragma.
parsePragmaOptions
@@ -574,16 +633,16 @@ parsePragmaOptions
-- ^ Command-line options which should be updated.
-> Either String PragmaOptions
parsePragmaOptions argv opts = do
- ps <- parseOptions' argv pragmaOptions
+ ps <- getOptSimple argv pragmaOptions
(\s _ -> throwError $ "Bad option in pragma: " ++ s)
(optPragmaOptions opts)
- checkOpts (opts { optPragmaOptions = ps })
+ _ <- checkOpts (opts { optPragmaOptions = ps })
return ps
-- | Parse options for a plugin.
parsePluginOptions :: [String] -> [OptDescr (Flag opts)] -> Flag opts
parsePluginOptions argv opts =
- parseOptions' argv opts
+ getOptSimple argv opts
(\s _ -> throwError $
"Internal error: Flag " ++ s ++ " passed to a plugin")
@@ -614,6 +673,18 @@ usage options pluginInfos progName =
"\n Inherits options from: " ++ unwords pls
------------------------------------------------------------------------
+-- Some paths
+
+-- | Returns the absolute default lib dir. This directory is used to
+-- store the Primitive.agda file.
+defaultLibDir :: IO FilePath
+defaultLibDir = do
+ libdir <- fmap filePath (absolute =<< getDataFileName "lib")
+ ifM (doesDirectoryExist libdir)
+ (return libdir)
+ (error $ "The lib directory " ++ libdir ++ " does not exist")
+
+------------------------------------------------------------------------
-- All tests
tests :: IO Bool
diff --git a/src/full/Agda/Interaction/Response.hs b/src/full/Agda/Interaction/Response.hs
index f620452..2caf51f 100644
--- a/src/full/Agda/Interaction/Response.hs
+++ b/src/full/Agda/Interaction/Response.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
------------------------------------------------------------------------
-- | Data type for all interactive responses
diff --git a/src/full/Agda/Main.hs b/src/full/Agda/Main.hs
index f5f1c79..f7e4293 100644
--- a/src/full/Agda/Main.hs
+++ b/src/full/Agda/Main.hs
@@ -7,18 +7,15 @@ module Agda.Main where
import Control.Monad.State
import Control.Applicative
-import qualified Data.List as List
import Data.Maybe
import System.Environment
import System.Exit
-import qualified Text.PrettyPrint.Boxes as Boxes
-
import Agda.Syntax.Concrete.Pretty ()
import Agda.Syntax.Abstract.Name (toTopLevelModuleName)
-import Agda.Interaction.CommandLine.CommandLine
+import Agda.Interaction.CommandLine
import Agda.Interaction.Options
import Agda.Interaction.Monad
import Agda.Interaction.EmacsTop (mimicGHCi)
@@ -29,7 +26,6 @@ import qualified Agda.Interaction.Highlighting.LaTeX as LaTeX
import Agda.Interaction.Highlighting.HTML
import Agda.TypeChecking.Monad
-import Agda.TypeChecking.Monad.Benchmark
import qualified Agda.TypeChecking.Monad.Benchmark as Bench
import Agda.TypeChecking.Errors
@@ -39,9 +35,7 @@ import Agda.Compiler.JS.Compiler as JS
import Agda.Utils.Lens
import Agda.Utils.Monad
-import Agda.Utils.Pretty (prettyShow)
import Agda.Utils.String
-import qualified Agda.Utils.Trie as Trie
import Agda.Tests
import Agda.Version
@@ -59,38 +53,32 @@ runAgda = do
let opts = parseStandardOptions argv
case opts of
Left err -> liftIO $ optionError err
- Right opts
- | optShowHelp opts -> liftIO printUsage
- | optShowVersion opts -> liftIO printVersion
- | optRunTests opts -> liftIO $ do
+ Right opts -> runAgdaWithOptions generateHTML progName opts
+
+-- | Run Agda with parsed command line options and with a custom HTML generator
+runAgdaWithOptions
+ :: TCM () -- ^ HTML generating action
+ -> String -- ^ program name
+ -> CommandLineOptions -- ^ parsed command line options
+ -> TCM ()
+runAgdaWithOptions generateHTML progName opts
+ | optShowHelp opts = liftIO printUsage
+ | optShowVersion opts = liftIO printVersion
+ | optRunTests opts = liftIO $ do
ok <- testSuite
unless ok exitFailure
| isNothing (optInputFile opts)
&& not (optInteractive opts)
&& not (optGHCiInteraction opts)
- -> liftIO printUsage
- | otherwise -> do
+ = liftIO printUsage
+ | otherwise = do
setCommandLineOptions opts
-- Main function.
-- Bill everything to root of Benchmark trie.
- billTo [] $ checkFile
+ Bench.billTo [] $ checkFile
-- Print benchmarks.
- whenM benchmarking $ do
- (accounts, times) <- List.unzip . Trie.toList <$> getBenchmark
- -- Generate a table.
- let showAccount [] = "Total time"
- showAccount ks = List.concat . List.intersperse "." . map show $ ks
- -- First column is accounts.
- col1 = Boxes.vcat Boxes.left $
- map (Boxes.text . showAccount) $
- accounts
- -- Second column is times.
- col2 = Boxes.vcat Boxes.right $
- map (Boxes.text . prettyShow) $
- times
- table = Boxes.hsep 1 Boxes.left [col1, col2]
- reportBenchmarkingLn $ Boxes.render table
+ Bench.print
-- Print accumulated statistics.
printStatistics 20 Nothing =<< use lensAccumStatistics
@@ -179,10 +167,10 @@ optionError err = do
printUsage
exitFailure
--- | Main
-main :: IO ()
-main = do
- r <- runTCMTop $ runAgda `catchError` \err -> do
+-- | Run a TCM action in IO; catch and pretty print errors.
+runTCMPrettyErrors :: TCM () -> IO ()
+runTCMPrettyErrors tcm = do
+ r <- runTCMTop $ tcm `catchError` \err -> do
s <- prettyError err
liftIO $ putStrLn s
throwError err
@@ -192,3 +180,7 @@ main = do
`catchImpossible` \e -> do
putStr $ show e
exitFailure
+
+-- | Main
+main :: IO ()
+main = runTCMPrettyErrors runAgda
diff --git a/src/full/Agda/Syntax/Abstract.hs b/src/full/Agda/Syntax/Abstract.hs
index 406e8f9..ea02ed4 100644
--- a/src/full/Agda/Syntax/Abstract.hs
+++ b/src/full/Agda/Syntax/Abstract.hs
@@ -1,12 +1,12 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+-- GHC 7.4.2 requires this layout for the pragmas. See Issue 1460.
+{-# LANGUAGE CPP,
+ DeriveDataTypeable,
+ DeriveFoldable,
+ DeriveFunctor,
+ DeriveTraversable,
+ FlexibleInstances,
+ MultiParamTypeClasses,
+ TemplateHaskell #-}
{-| The abstract syntax. This is what you get after desugaring and scope
analysis of the concrete syntax. The type checker works on abstract syntax,
@@ -117,7 +117,7 @@ data Axiom
deriving (Typeable, Eq, Ord, Show)
-- | Renaming (generic).
-type Ren a = Map a a
+type Ren a = [(a, a)]
data Declaration
= Axiom Axiom DefInfo ArgInfo QName Expr -- ^ type signature (can be irrelevant and colored, but not hidden)
@@ -170,6 +170,9 @@ data ModuleApplication
data Pragma
= OptionsPragma [String]
| BuiltinPragma String Expr
+ | BuiltinNoDefPragma String QName
+ -- ^ Builtins that do not come with a definition,
+ -- but declare a name for an Agda concept.
| RewritePragma QName
| CompiledPragma QName String
| CompiledExportPragma QName String
@@ -209,20 +212,25 @@ data TypedBindings = TypedBindings Range (Arg TypedBinding)
-- ^ . @(xs : e)@ or @{xs : e}@
deriving (Typeable, Show)
--- | A typed binding. Appears in dependent function spaces, typed lambdas, and
--- telescopes. I might be tempting to simplify this to only bind a single
--- name at a time. This would mean that we would have to typecheck the type
--- several times (@(x y : A)@ vs. @(x : A)(y : A)@).
--- In most cases this wouldn't really be a problem, but it's good
--- principle to not do extra work unless you have to.
+-- | A typed binding. Appears in dependent function spaces, typed lambdas, and
+-- telescopes. It might be tempting to simplify this to only bind a single
+-- name at a time, and translate, say, @(x y : A)@ to @(x : A)(y : A)@
+-- before type-checking. However, this would be slightly problematic:
--
--- (Andreas, 2013-12-10: The more serious problem would that the translation
--- from @(x y : ?)@ to @(x : ?) (y : ?)@ duplicates the hole @?@.
+-- 1. We would have to typecheck the type @A@ several times.
+--
+-- 2. If @A@ contains a meta variable or hole, it would be duplicated
+-- by such a translation.
+--
+-- While 1. is only slightly inefficient, 2. would be an outright bug.
+-- Duplicating @A@ could not be done naively, we would have to make sure
+-- that the metas of the copy are aliases of the metas of the original.
+
data TypedBinding
- = TBind Range [Name] Expr
+ = TBind Range [WithHiding Name] Expr
-- ^ As in telescope @(x y z : A)@ or type @(x y z : A) -> B@.
| TLet Range [LetBinding]
- -- ^
+ -- ^ E.g. @(let x = e)@ or @(let open M)@.
deriving (Typeable, Show)
type Telescope = [TypedBindings]
@@ -244,7 +252,7 @@ data RHS
| AbsurdRHS
| WithRHS QName [Expr] [Clause]
-- ^ The 'QName' is the name of the with function.
- | RewriteRHS [QName] [Expr] RHS [Declaration]
+ | RewriteRHS [(QName, Expr)] RHS [Declaration]
-- ^ The 'QName's are the names of the generated with functions.
-- One for each 'Expr'.
-- The RHS shouldn't be another @RewriteRHS@.
@@ -399,6 +407,16 @@ instance IsProjP a => IsProjP (Named n a) where
Instances
--------------------------------------------------------------------------}
+instance LensHiding TypedBindings where
+ getHiding (TypedBindings _ a) = getHiding a
+ mapHiding f (TypedBindings r a) = TypedBindings r $ mapHiding f a
+
+instance LensHiding LamBinding where
+ getHiding (DomainFree ai _) = getHiding ai
+ getHiding (DomainFull tb) = getHiding tb
+ mapHiding f (DomainFree ai x) = mapHiding f ai `DomainFree` x
+ mapHiding f (DomainFull tb) = DomainFull $ mapHiding f tb
+
instance HasRange LamBinding where
getRange (DomainFree _ x) = getRange x
getRange (DomainFull b) = getRange b
@@ -488,7 +506,7 @@ instance HasRange RHS where
getRange AbsurdRHS = noRange
getRange (RHS e) = getRange e
getRange (WithRHS _ e cs) = fuseRange e cs
- getRange (RewriteRHS _ es rhs wh) = getRange (es, rhs, wh)
+ getRange (RewriteRHS xes rhs wh) = getRange (map snd xes, rhs, wh)
instance HasRange LetBinding where
getRange (LetBind i _ _ _ _ ) = getRange i
@@ -531,17 +549,15 @@ instance KillRange Expr where
killRange (App i e1 e2) = killRange3 App i e1 e2
killRange (WithApp i e es) = killRange3 WithApp i e es
killRange (Lam i b e) = killRange3 Lam i b e
- killRange (AbsurdLam i h) = killRange1 AbsurdLam i h
+ killRange (AbsurdLam i h) = killRange2 AbsurdLam i h
killRange (ExtendedLam i n d ps) = killRange4 ExtendedLam i n d ps
killRange (Pi i a b) = killRange3 Pi i a b
killRange (Fun i a b) = killRange3 Fun i a b
- killRange (Set i n) = Set (killRange i) n
+ killRange (Set i n) = killRange2 Set i n
killRange (Prop i) = killRange1 Prop i
killRange (Let i ds e) = killRange3 Let i ds e
- killRange (Rec i fs) = Rec (killRange i) (map (id -*- killRange) fs)
- killRange (RecUpdate i e fs) = RecUpdate (killRange i)
- (killRange e)
- (map (id -*- killRange) fs)
+ killRange (Rec i fs) = killRange2 Rec i fs
+ killRange (RecUpdate i e fs) = killRange3 RecUpdate i e fs
killRange (ETel tel) = killRange1 ETel tel
killRange (ScopedExpr s e) = killRange1 (ScopedExpr s) e
killRange (QuoteGoal i x e) = killRange3 QuoteGoal i x e
@@ -549,7 +565,7 @@ instance KillRange Expr where
killRange (Quote i) = killRange1 Quote i
killRange (QuoteTerm i) = killRange1 QuoteTerm i
killRange (Unquote i) = killRange1 Unquote i
- killRange (DontCare e) = DontCare e
+ killRange (DontCare e) = killRange1 DontCare e
killRange (PatternSyn x) = killRange1 PatternSyn x
instance KillRange Declaration where
@@ -608,7 +624,7 @@ instance KillRange RHS where
killRange AbsurdRHS = AbsurdRHS
killRange (RHS e) = killRange1 RHS e
killRange (WithRHS q e cs) = killRange3 WithRHS q e cs
- killRange (RewriteRHS x es rhs wh) = killRange4 RewriteRHS x es rhs wh
+ killRange (RewriteRHS xes rhs wh) = killRange3 RewriteRHS xes rhs wh
instance KillRange LetBinding where
killRange (LetBind i info a b c) = killRange5 LetBind i info a b c
@@ -685,7 +701,7 @@ instance AllNames RHS where
allNames (RHS e) = allNames e
allNames AbsurdRHS{} = Seq.empty
allNames (WithRHS q _ cls) = q <| allNames cls
- allNames (RewriteRHS qs _ rhs cls) = Seq.fromList qs >< allNames rhs >< allNames cls
+ allNames (RewriteRHS qes rhs cls) = Seq.fromList (map fst qes) >< allNames rhs >< allNames cls
instance AllNames Expr where
allNames Var{} = Seq.empty
@@ -892,4 +908,3 @@ insertImplicitPatSynArgs wild r ns as = matchArgs r ns as
matchArgs r (n:ns) as = do
(p, as) <- matchNextArg r n as
first ((unArg n, p) :) <$> matchArgs (getRange p) ns as
-
diff --git a/src/full/Agda/Syntax/Abstract/Copatterns.hs b/src/full/Agda/Syntax/Abstract/Copatterns.hs
index 5220c0c..56fe44c 100644
--- a/src/full/Agda/Syntax/Abstract/Copatterns.hs
+++ b/src/full/Agda/Syntax/Abstract/Copatterns.hs
@@ -1,12 +1,11 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE TupleSections #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE TupleSections #-}
module Agda.Syntax.Abstract.Copatterns (translateCopatternClauses) where
@@ -263,6 +262,10 @@ class Rename e where
rename' :: NameMap -> e -> e
rename' rho = rename (flip lookup rho)
+-- | 'QName's are not renamed.
+instance Rename QName where
+ rename _ q = q
+
instance Rename Expr where
rename rho e =
case e of
@@ -325,19 +328,13 @@ instance Rename RHS where
RHS e -> RHS (rename rho e)
AbsurdRHS -> e
WithRHS n es cs -> WithRHS n (rename rho es) (rename rho cs)
- RewriteRHS ns es r ds -> RewriteRHS ns (rename rho es) (rename rho r) (rename rho ds)
+ RewriteRHS nes r ds -> RewriteRHS (rename rho nes) (rename rho r) (rename rho ds)
instance Rename LHS where
rename rho (LHS i core ps) = LHS i (rename rho core) (rename rho ps)
instance Rename LHSCore where
rename rho = fmap (rename rho) -- only rename in dot patterns
-{-
- rename rho = ren where
- ren e = case e of
- LHSHead f ps -> LHSHead f (ren ps)
- LHSProj d ps1 core ps2 -> LHSProj d (ren ps1) (ren core) (ren ps2)
--}
instance Rename Pattern where
rename rho = fmap (rename rho) -- only rename in dot patterns
@@ -354,6 +351,8 @@ instance Rename a => Rename (Named n a) where
instance Rename a => Rename [a] where
rename rho = map (rename rho)
+instance (Rename a, Rename b) => Rename (a, b) where
+ rename rho (a,b) = (rename rho a, rename rho b)
diff --git a/src/full/Agda/Syntax/Abstract/Name.hs b/src/full/Agda/Syntax/Abstract/Name.hs
index 1e29f4e..f62811b 100644
--- a/src/full/Agda/Syntax/Abstract/Name.hs
+++ b/src/full/Agda/Syntax/Abstract/Name.hs
@@ -1,12 +1,11 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TypeSynonymInstances #-}
{-| Abstract names carry unique identifiers and stuff.
-}
@@ -288,6 +287,9 @@ instance Pretty ModuleName where
instance Pretty QName where
pretty = hcat . punctuate (text ".") . map pretty . qnameToList
+instance Pretty AmbiguousQName where
+ pretty (AmbQ qs) = hcat $ punctuate (text " | ") $ map pretty qs
+
------------------------------------------------------------------------
-- * Range instances
------------------------------------------------------------------------
@@ -326,23 +328,25 @@ instance SetRange ModuleName where
-- ** KillRange
instance KillRange Name where
- killRange x = x { nameConcrete = killRange $ nameConcrete x
- -- Andreas, 2014-03-30
- -- An experiment: what happens if we preserve
- -- the range of the binding site, but kill all
- -- other ranges before serialization?
- -- Andreas, Makoto, 2014-10-18 AIM XX
- -- Kill all ranges in signature, including nameBindingSite.
- , nameBindingSite = noRange
- }
+ killRange (Name a b c d) = killRange4 Name a b c d
+ -- killRange x = x { nameConcrete = killRange $ nameConcrete x
+ -- -- Andreas, 2014-03-30
+ -- -- An experiment: what happens if we preserve
+ -- -- the range of the binding site, but kill all
+ -- -- other ranges before serialization?
+ -- -- Andreas, Makoto, 2014-10-18 AIM XX
+ -- -- Kill all ranges in signature, including nameBindingSite.
+ -- , nameBindingSite = noRange
+ -- }
instance KillRange ModuleName where
killRange (MName xs) = MName $ killRange xs
instance KillRange QName where
- killRange q = q { qnameModule = killRange $ qnameModule q
- , qnameName = killRange $ qnameName q
- }
+ killRange (QName a b) = killRange2 QName a b
+ -- killRange q = q { qnameModule = killRange $ qnameModule q
+ -- , qnameName = killRange $ qnameName q
+ -- }
instance KillRange AmbiguousQName where
killRange (AmbQ xs) = AmbQ $ killRange xs
diff --git a/src/full/Agda/Syntax/Abstract/Name.hs-boot b/src/full/Agda/Syntax/Abstract/Name.hs-boot
new file mode 100644
index 0000000..187181b
--- /dev/null
+++ b/src/full/Agda/Syntax/Abstract/Name.hs-boot
@@ -0,0 +1,10 @@
+module Agda.Syntax.Abstract.Name where
+
+import {-# SOURCE #-} Agda.Syntax.Fixity (Fixity')
+
+data Name
+
+instance Show Name
+instance Ord Name
+
+nameFixity :: Name -> Fixity'
diff --git a/src/full/Agda/Syntax/Abstract/Views.hs b/src/full/Agda/Syntax/Abstract/Views.hs
index f5a8b55..2262217 100644
--- a/src/full/Agda/Syntax/Abstract/Views.hs
+++ b/src/full/Agda/Syntax/Abstract/Views.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE NoMonomorphismRestriction #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE TupleSections #-}
module Agda.Syntax.Abstract.Views where
@@ -59,7 +59,7 @@ deepUnScope = mapExpr unScope
-- * Traversal
-- | Apply an expression rewriting to every subexpression, inside-out.
--- See 'Agda.Syntax.Internal.Generic'
+-- See "Agda.Syntax.Internal.Generic".
class ExprLike a where
foldExpr :: Monoid m => (Expr -> m) -> a -> m
traverseExpr :: (Monad m, Applicative m) => (Expr -> m Expr) -> a -> m a
@@ -214,7 +214,7 @@ instance ExprLike RHS where
RHS e -> fold e
AbsurdRHS{} -> mempty
WithRHS _ es cs -> fold es `mappend` fold cs
- RewriteRHS _ es rhs ds -> fold es `mappend` fold rhs `mappend` fold ds
+ RewriteRHS xes rhs ds -> fold xes `mappend` fold rhs `mappend` fold ds
where fold e = foldExpr f e
traverseExpr f rhs =
@@ -222,7 +222,7 @@ instance ExprLike RHS where
RHS e -> RHS <$> trav e
AbsurdRHS{} -> pure rhs
WithRHS x es cs -> WithRHS x <$> trav es <*> trav cs
- RewriteRHS xs es rhs ds -> RewriteRHS xs <$> trav es <*> trav rhs <*> trav ds
+ RewriteRHS xes rhs ds -> RewriteRHS <$> trav xes <*> trav rhs <*> trav ds
where trav e = traverseExpr f e
instance ExprLike Declaration where
diff --git a/src/full/Agda/Syntax/Common.hs b/src/full/Agda/Syntax/Common.hs
index 381b300..32c4420 100644
--- a/src/full/Agda/Syntax/Common.hs
+++ b/src/full/Agda/Syntax/Common.hs
@@ -1,11 +1,10 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TypeSynonymInstances #-}
{-| Some common syntactic entities are defined in this module.
-}
@@ -17,16 +16,16 @@ import Data.ByteString.Char8 (ByteString)
import qualified Data.ByteString.Char8 as ByteString
import Data.Foldable
import Data.Hashable
+import Data.Monoid
import Data.Traversable
import Data.Typeable (Typeable)
-import Test.QuickCheck
+import Test.QuickCheck hiding (Small)
import Agda.Syntax.Position
import Agda.Utils.Functor
import Agda.Utils.Pretty
-import Agda.Utils.Size
#include "undefined.h"
import Agda.Utils.Impossible
@@ -73,9 +72,39 @@ instance CoArbitrary Induction where
data Hiding = Hidden | Instance | NotHidden
deriving (Typeable, Show, Eq, Ord)
+-- | 'Hiding' is an idempotent partial monoid, with unit 'NotHidden'.
+-- 'Instance' and 'NotHidden' are incompatible.
+instance Monoid Hiding where
+ mempty = NotHidden
+ mappend NotHidden h = h
+ mappend h NotHidden = h
+ mappend Hidden Hidden = Hidden
+ mappend Instance Instance = Instance
+ mappend _ _ = __IMPOSSIBLE__
+
instance KillRange Hiding where
killRange = id
+-- | Decorating something with 'Hiding' information.
+data WithHiding a = WithHiding Hiding a
+ deriving (Typeable, Eq, Ord, Show, Functor, Foldable, Traversable)
+
+instance Decoration WithHiding where
+ traverseF f (WithHiding h a) = WithHiding h <$> f a
+
+instance Applicative WithHiding where
+ pure = WithHiding mempty
+ WithHiding h f <*> WithHiding h' a = WithHiding (mappend h h') (f a)
+
+instance HasRange a => HasRange (WithHiding a) where
+ getRange = getRange . dget
+
+instance SetRange a => SetRange (WithHiding a) where
+ setRange = fmap . setRange
+
+instance KillRange a => KillRange (WithHiding a) where
+ killRange = fmap killRange
+
-- | A lens to access the 'Hiding' attribute in data structures.
-- Minimal implementation: @getHiding@ and one of @setHiding@ or @mapHiding@.
class LensHiding a where
@@ -93,6 +122,15 @@ instance LensHiding Hiding where
setHiding = const
mapHiding = id
+instance LensHiding (WithHiding a) where
+ getHiding (WithHiding h _) = h
+ setHiding h (WithHiding _ a) = WithHiding h a
+ mapHiding f (WithHiding h a) = WithHiding (f h) a
+
+-- | Monoidal composition of 'Hiding' information in some data.
+mergeHiding :: LensHiding a => WithHiding a -> a
+mergeHiding (WithHiding h a) = mapHiding (mappend h) a
+
-- | @isHidden@ does not apply to 'Instance', only to 'Hidden'.
isHidden :: LensHiding a => a -> Bool
isHidden a = getHiding a == Hidden
@@ -119,27 +157,55 @@ makeInstance = setHiding Instance
-- * Relevance
---------------------------------------------------------------------------
+-- | An constructor argument is big if the sort of its type is bigger than
+-- the sort of the data type. Only parameters (and maybe forced arguments)
+-- are allowed to be big.
+-- @
+-- List : Set -> Set
+-- nil : (A : Set) -> List A
+-- @
+-- @A@ is big in constructor @nil@ as the sort @Set1@ of its type @Set@
+-- is bigger than the sort @Set@ of the data type @List@.
+data Big = Big | Small
+ deriving (Typeable, Show, Eq, Enum, Bounded)
+
+instance Ord Big where
+ Big <= Small = False
+ _ <= _ = True
+
-- | A function argument can be relevant or irrelevant.
--- See 'Agda.TypeChecking.Irrelevance'.
+-- See "Agda.TypeChecking.Irrelevance".
data Relevance
= Relevant -- ^ The argument is (possibly) relevant at compile-time.
| NonStrict -- ^ The argument may never flow into evaluation position.
-- Therefore, it is irrelevant at run-time.
-- It is treated relevantly during equality checking.
| Irrelevant -- ^ The argument is irrelevant at compile- and runtime.
- | Forced -- ^ The argument can be skipped during equality checking
+ | Forced Big -- ^ The argument can be skipped during equality checking
-- because its value is already determined by the type.
+ -- If a constructor argument is big, it has to be regarded
+ -- absent, otherwise we get into paradoxes.
| UnusedArg -- ^ The polarity checker has determined that this argument
-- is unused in the definition. It can be skipped during
-- equality checking but should be mined for solutions
-- of meta-variables with relevance 'UnusedArg'
- deriving (Typeable, Show, Eq, Enum, Bounded)
+ deriving (Typeable, Show, Eq)
+
+allRelevances :: [Relevance]
+allRelevances =
+ [ Relevant
+ , NonStrict
+ , Irrelevant
+ , Forced Small
+ , Forced Big
+ , UnusedArg
+ ]
instance KillRange Relevance where
killRange rel = rel -- no range to kill
instance Arbitrary Relevance where
- arbitrary = elements [minBound..maxBound]
+ arbitrary = elements allRelevances
instance Ord Relevance where
(<=) = moreRelevant
@@ -186,8 +252,8 @@ moreRelevant r r' =
(UnusedArg, _) -> True
(_, UnusedArg) -> False
-- third bottom
- (Forced, _) -> True
- (_, Forced) -> False
+ (Forced{}, _) -> True
+ (_, Forced{}) -> False
-- remaining case
(NonStrict,NonStrict) -> True
@@ -206,7 +272,7 @@ data ArgInfo c = ArgInfo
instance KillRange c => KillRange (ArgInfo c) where
killRange (ArgInfo h r cs) = killRange3 ArgInfo h r cs
-{- FAILED to define a less for ArgInfo, since it is parametrized by c
+{- FAILED to define a lens for ArgInfo, since it is parametrized by c
can't instantiate the following to f c = Arg c e
since Haskell does not have lambda abstraction
@@ -270,12 +336,12 @@ instance Decoration (Arg c) where
instance HasRange a => HasRange (Arg c a) where
getRange = getRange . unArg
+instance SetRange a => SetRange (Arg c a) where
+ setRange r = fmap $ setRange r
+
instance (KillRange c, KillRange a) => KillRange (Arg c a) where
killRange (Arg info a) = killRange2 Arg info a
-instance Sized a => Sized (Arg c a) where
- size = size . unArg
-
instance (Eq a, Eq c) => Eq (Arg c a) where
Arg (ArgInfo h1 _ cs1) x1 == Arg (ArgInfo h2 _ cs2) x2 = (h1, cs1, x1) == (h2, cs2, x2)
@@ -285,11 +351,13 @@ instance (Show a, Show c) => Show (Arg c a) where
showH Hidden s = "{" ++ s ++ "}"
showH NotHidden s = "(" ++ s ++ ")"
showH Instance s = "{{" ++ s ++ "}}"
- showR Irrelevant s = "." ++ s
- showR NonStrict s = "?" ++ s
- showR Forced s = "!" ++ s
- showR UnusedArg s = "k" ++ s -- constant
- showR Relevant s = "r" ++ s -- Andreas: I want to see it explicitly
+ showR r s = case r of
+ Irrelevant -> "." ++ s
+ NonStrict -> "?" ++ s
+ Forced Big -> "!b" ++ s
+ Forced Small -> "!" ++ s
+ UnusedArg -> "k" ++ s -- constant
+ Relevant -> "r" ++ s -- Andreas: I want to see it explicitly
showC cs s = show cs ++ s
instance LensHiding (Arg c e) where
@@ -392,9 +460,6 @@ instance HasRange a => HasRange (Dom c a) where
instance (KillRange c, KillRange a) => KillRange (Dom c a) where
killRange (Dom info a) = killRange2 Dom info a
-instance Sized a => Sized (Dom c a) where
- size = size . unDom
-
instance (Show a, Show c) => Show (Dom c a) where
show = show . argFromDom
@@ -447,12 +512,12 @@ instance Decoration (Named name) where
instance HasRange a => HasRange (Named name a) where
getRange = getRange . namedThing
+instance SetRange a => SetRange (Named name a) where
+ setRange r = fmap $ setRange r
+
instance (KillRange name, KillRange a) => KillRange (Named name a) where
killRange (Named n a) = Named (killRange n) (killRange a)
-instance Sized a => Sized (Named name a) where
- size = size . namedThing
-
instance Show a => Show (Named_ a) where
show (Named Nothing x) = show x
show (Named (Just n) x) = rawNameToString (rangedThing n) ++ " = " ++ show x
@@ -555,6 +620,9 @@ type Arity = Nat
data NameId = NameId Integer Integer
deriving (Eq, Ord, Typeable)
+instance KillRange NameId where
+ killRange = id
+
instance Show NameId where
show (NameId x i) = show x ++ "@" ++ show i
diff --git a/src/full/Agda/Syntax/Concrete.hs b/src/full/Agda/Syntax/Concrete.hs
index 1ba4fa2..bc124d4 100644
--- a/src/full/Agda/Syntax/Concrete.hs
+++ b/src/full/Agda/Syntax/Concrete.hs
@@ -1,10 +1,10 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+-- GHC 7.4.2 requires this layout for the pragmas. See Issue 1460.
+{-# LANGUAGE CPP,
+ DeriveDataTypeable,
+ DeriveFoldable,
+ DeriveFunctor,
+ DeriveTraversable,
+ FlexibleInstances #-}
{-| The concrete syntax is a raw representation of the program text
without any desugaring at all. This is what the parser produces.
@@ -62,6 +62,8 @@ import Data.Typeable (Typeable)
import Data.Foldable (Foldable)
import Data.Traversable (Traversable)
import Data.List
+import Data.Set (Set)
+
import Agda.Syntax.Position
import Agda.Syntax.Common hiding (Arg, Dom, NamedArg, ArgInfo)
import qualified Agda.Syntax.Common as Common
@@ -70,6 +72,7 @@ import Agda.Syntax.Notation
import Agda.Syntax.Literal
import Agda.Syntax.Concrete.Name
+import qualified Agda.Syntax.Abstract.Name as A
import Agda.Utils.Lens
@@ -101,7 +104,14 @@ data Expr
| Underscore !Range (Maybe String) -- ^ ex: @_@ or @_A_5@
| RawApp !Range [Expr] -- ^ before parsing operators
| App !Range Expr (NamedArg Expr) -- ^ ex: @e e@, @e {e}@, or @e {x = e}@
- | OpApp !Range QName [NamedArg (OpApp Expr)] -- ^ ex: @e + e@
+ | OpApp !Range QName (Set A.Name)
+ [NamedArg (OpApp Expr)] -- ^ ex: @e + e@
+ -- The 'QName' is
+ -- possibly ambiguous,
+ -- but it must
+ -- correspond to one of
+ -- the names in the
+ -- set.
| WithApp !Range Expr [Expr] -- ^ ex: @e | e1 | .. | en@
| HiddenArg !Range (Named_ Expr) -- ^ ex: @{e}@ or @{x=e}@
| InstanceArg !Range (Named_ Expr) -- ^ ex: @{{e}}@ or @{{x=e}}@
@@ -131,7 +141,7 @@ data Expr
| Equal !Range Expr Expr -- ^ ex: @a = b@, used internally in the parser
deriving (Typeable)
-instance NFData Expr
+instance NFData Expr where rnf x = seq x ()
-- | Concrete patterns. No literals in patterns at the moment.
data Pattern
@@ -139,7 +149,12 @@ data Pattern
| QuoteP !Range -- ^ @quote@
| AppP Pattern (NamedArg Pattern) -- ^ @p p'@ or @p {x = p'}@
| RawAppP !Range [Pattern] -- ^ @p1..pn@ before parsing operators
- | OpAppP !Range QName [NamedArg Pattern] -- ^ eg: @p => p'@ for operator @_=>_@
+ | OpAppP !Range QName (Set A.Name)
+ [NamedArg Pattern] -- ^ eg: @p => p'@ for operator @_=>_@
+ -- The 'QName' is possibly
+ -- ambiguous, but it must
+ -- correspond to one of
+ -- the names in the set.
| HiddenP !Range (Named_ Pattern) -- ^ @{p}@ or @{x = p}@
| InstanceP !Range (Named_ Pattern) -- ^ @{{p}}@ or @{{x = p}}@
| ParenP !Range Pattern -- ^ @(p)@
@@ -150,7 +165,7 @@ data Pattern
| LitP Literal -- ^ @0@, @1@, etc.
deriving (Typeable)
-instance NFData Pattern
+instance NFData Pattern where rnf x = seq x ()
-- | A lambda binding is either domain free or typed.
type LamBinding = LamBinding' TypedBindings
@@ -162,11 +177,14 @@ data LamBinding' a
-- | A sequence of typed bindings with hiding information. Appears in dependent
-- function spaces, typed lambdas, and telescopes.
+--
+-- If the individual binding contains hiding information as well, the
+-- 'Hiding' in @TypedBindings@ must be the unit 'NotHidden'.
type TypedBindings = TypedBindings' TypedBinding
data TypedBindings' a = TypedBindings !Range (Arg a)
- -- ^ . @(xs : e)@ or @{xs : e}@
+ -- ^ . @(xs : e)@ or @{xs : e}@ or something like @(x {y} _ : e)@.
deriving (Typeable, Functor, Foldable, Traversable)
data BoundName = BName
@@ -187,7 +205,7 @@ mkBoundName x f = BName x x f
type TypedBinding = TypedBinding' Expr
data TypedBinding' e
- = TBind !Range [BoundName] e -- ^ Binding @(x1 ... xn : A)@.
+ = TBind !Range [WithHiding BoundName] e -- ^ Binding @(x1 ... xn : A)@.
| TLet !Range [Declaration] -- ^ Let binding @(let Ds)@ or @(open M args)@.
deriving (Typeable, Functor, Foldable, Traversable)
@@ -239,15 +257,7 @@ data LHSCore
}
deriving (Typeable)
-instance NFData LHSCore
-
-{- TRASH
-lhsCoreToPattern :: LHSCore -> Pattern
-lhsCoreToPattern (LHSHead f args) = OpAppP (fuseRange f args) (unqualify f) args
-lhsCoreToPattern (LHSProj d ps1 lhscore ps2) = OpAppP (fuseRange d ps) (unqualify) ps
- where p = lhsCoreToPattern lhscore
- ps = ps1 ++ p : ps2
--}
+instance NFData LHSCore where rnf x = seq x ()
type RHS = RHS' Expr
data RHS' e
@@ -440,7 +450,7 @@ patternHead p =
AppP p p' -> patternHead p
RawAppP _ [] -> __IMPOSSIBLE__
RawAppP _ (p:_) -> patternHead p
- OpAppP _ name ps -> return $ unqualify name
+ OpAppP _ name _ ps -> return $ unqualify name
HiddenP _ (namedPat) -> patternHead (namedThing namedPat)
ParenP _ p -> patternHead p
WildP _ -> Nothing
@@ -460,7 +470,7 @@ patternNames p =
IdentP x -> [unqualify x]
AppP p p' -> concatMap patternNames [p, namedArg p']
RawAppP _ ps -> concatMap patternNames ps
- OpAppP _ name ps -> unqualify name : concatMap (patternNames . namedArg) ps
+ OpAppP _ name _ ps -> unqualify name : concatMap (patternNames . namedArg) ps
HiddenP _ (namedPat) -> patternNames (namedThing namedPat)
ParenP _ p -> patternNames p
WildP _ -> []
@@ -475,6 +485,26 @@ patternNames p =
Instances
--------------------------------------------------------------------------}
+-- Lenses
+------------------------------------------------------------------------
+
+instance LensRelevance TypedBindings where
+ getRelevance (TypedBindings _ b) = getRelevance b
+ mapRelevance f (TypedBindings r b) = TypedBindings r $ mapRelevance f b
+
+instance LensHiding TypedBindings where
+ getHiding (TypedBindings _ b) = getHiding b
+ mapHiding f (TypedBindings r b) = TypedBindings r $ mapHiding f b
+
+instance LensHiding LamBinding where
+ getHiding (DomainFree ai _) = getHiding ai
+ getHiding (DomainFull a) = getHiding a
+ mapHiding f (DomainFree ai x) = DomainFree (mapHiding f ai) x
+ mapHiding f (DomainFull a) = DomainFull $ mapHiding f a
+
+-- HasRange instances
+------------------------------------------------------------------------
+
instance HasRange e => HasRange (OpApp e) where
getRange e = case e of
Ordinary e -> getRange e
@@ -489,7 +519,7 @@ instance HasRange Expr where
Underscore r _ -> r
App r _ _ -> r
RawApp r _ -> r
- OpApp r _ _ -> r
+ OpApp r _ _ _ -> r
WithApp r _ _ -> r
Lam r _ _ -> r
AbsurdLam r _ -> r
@@ -617,7 +647,7 @@ instance HasRange AsName where
instance HasRange Pattern where
getRange (IdentP x) = getRange x
getRange (AppP p q) = fuseRange p q
- getRange (OpAppP r _ _) = r
+ getRange (OpAppP r _ _ _) = r
getRange (RawAppP r _) = r
getRange (ParenP r _) = r
getRange (WildP r) = r
@@ -629,6 +659,30 @@ instance HasRange Pattern where
getRange (InstanceP r _) = r
getRange (DotP r _) = r
+-- SetRange instances
+------------------------------------------------------------------------
+
+instance SetRange TypedBindings where
+ setRange r (TypedBindings _ b) = TypedBindings r b
+
+instance SetRange Pattern where
+ setRange r (IdentP x) = IdentP (setRange r x)
+ setRange r (AppP p q) = AppP (setRange r p) (setRange r q)
+ setRange r (OpAppP _ x ns ps) = OpAppP r x ns ps
+ setRange r (RawAppP _ ps) = RawAppP r ps
+ setRange r (ParenP _ p) = ParenP r p
+ setRange r (WildP _) = WildP r
+ setRange r (AsP _ x p) = AsP r (setRange r x) p
+ setRange r (AbsurdP _) = AbsurdP r
+ setRange r (LitP l) = LitP (setRange r l)
+ setRange r (QuoteP _) = QuoteP r
+ setRange r (HiddenP _ p) = HiddenP r p
+ setRange r (InstanceP _ p) = InstanceP r p
+ setRange r (DotP _ e) = DotP r e
+
+-- KillRange instances
+------------------------------------------------------------------------
+
instance KillRange AsName where
killRange (AsName n _) = killRange1 (flip AsName noRange) n
@@ -666,7 +720,7 @@ instance KillRange Expr where
killRange (Underscore _ n) = Underscore noRange n
killRange (RawApp _ e) = killRange1 (RawApp noRange) e
killRange (App _ e a) = killRange2 (App noRange) e a
- killRange (OpApp _ n o) = killRange2 (OpApp noRange) n o
+ killRange (OpApp _ n ns o) = killRange3 (OpApp noRange) n ns o
killRange (WithApp _ e es) = killRange2 (WithApp noRange) e es
killRange (HiddenArg _ n) = killRange1 (HiddenArg noRange) n
killRange (InstanceArg _ n) = killRange1 (InstanceArg noRange) n
@@ -720,19 +774,19 @@ instance KillRange e => KillRange (OpApp e) where
killRange (Ordinary e) = killRange1 Ordinary e
instance KillRange Pattern where
- killRange (IdentP q) = killRange1 IdentP q
- killRange (AppP p n) = killRange2 AppP p n
- killRange (RawAppP _ p) = killRange1 (RawAppP noRange) p
- killRange (OpAppP _ n p) = killRange2 (OpAppP noRange) n p
- killRange (HiddenP _ n) = killRange1 (HiddenP noRange) n
- killRange (InstanceP _ n) = killRange1 (InstanceP noRange) n
- killRange (ParenP _ p) = killRange1 (ParenP noRange) p
- killRange (WildP _) = WildP noRange
- killRange (AbsurdP _) = AbsurdP noRange
- killRange (AsP _ n p) = killRange2 (AsP noRange) n p
- killRange (DotP _ e) = killRange1 (DotP noRange) e
- killRange (LitP l) = killRange1 LitP l
- killRange (QuoteP _) = QuoteP noRange
+ killRange (IdentP q) = killRange1 IdentP q
+ killRange (AppP p n) = killRange2 AppP p n
+ killRange (RawAppP _ p) = killRange1 (RawAppP noRange) p
+ killRange (OpAppP _ n ns p) = killRange3 (OpAppP noRange) n ns p
+ killRange (HiddenP _ n) = killRange1 (HiddenP noRange) n
+ killRange (InstanceP _ n) = killRange1 (InstanceP noRange) n
+ killRange (ParenP _ p) = killRange1 (ParenP noRange) p
+ killRange (WildP _) = WildP noRange
+ killRange (AbsurdP _) = AbsurdP noRange
+ killRange (AsP _ n p) = killRange2 (AsP noRange) n p
+ killRange (DotP _ e) = killRange1 (DotP noRange) e
+ killRange (LitP l) = killRange1 LitP l
+ killRange (QuoteP _) = QuoteP noRange
instance KillRange Pragma where
killRange (OptionsPragma _ s) = OptionsPragma noRange s
diff --git a/src/full/Agda/Syntax/Concrete/Definitions.hs b/src/full/Agda/Syntax/Concrete/Definitions.hs
index acc46d1..af11faf 100644
--- a/src/full/Agda/Syntax/Concrete/Definitions.hs
+++ b/src/full/Agda/Syntax/Concrete/Definitions.hs
@@ -1,9 +1,13 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TupleSections #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+-- GHC 7.4.2 requires this layout for the pragmas. See Issue 1460.
+{-# LANGUAGE CPP,
+ DeriveDataTypeable,
+ FlexibleInstances,
+ PatternGuards,
+ TupleSections #-}
+
+#if __GLASGOW_HASKELL__ >= 710
+{-# LANGUAGE FlexibleContexts #-}
+#endif
-- | Preprocess 'Agda.Syntax.Concrete.Declaration's, producing 'NiceDeclaration's.
--
@@ -39,15 +43,28 @@ module Agda.Syntax.Concrete.Definitions
, Measure
) where
+import Prelude hiding (null)
+
import Control.Arrow ((***))
-import Control.Applicative
+import Control.Applicative hiding (empty)
import Control.Monad.State
-import Data.Foldable hiding (concatMap, mapM_, notElem, elem, all)
+import Data.Foldable hiding
+ ( all
+ , concatMap
+ , elem
+ , mapM_
+ , notElem
+#if MIN_VERSION_base(4,8,0)
+ , null
+#endif
+ )
+
import qualified Data.Map as Map
import Data.Map (Map)
+import Data.Maybe
import Data.Monoid ( Monoid(mappend, mempty) )
-import Data.List as List
+import Data.List as List hiding (null)
import Data.Traversable (traverse)
import Data.Typeable (Typeable)
@@ -63,6 +80,7 @@ import Agda.Utils.Except ( Error(noMsg, strMsg), MonadError(throwError) )
import Agda.Utils.Lens
import Agda.Utils.List (headMaybe, isSublistOf)
import Agda.Utils.Monad
+import Agda.Utils.Null
import Agda.Utils.Pretty
import Agda.Utils.Update
@@ -79,28 +97,32 @@ import Agda.Utils.Impossible
modifiers have been distributed to the individual declarations.
-}
data NiceDeclaration
- = Axiom Range Fixity' Access IsInstance ArgInfo Name Expr
- -- ^ Axioms and functions can be declared irrelevant. (Hiding should be NotHidden)
- | NiceField Range Fixity' Access IsAbstract Name (Arg Expr)
- | PrimitiveFunction Range Fixity' Access IsAbstract Name Expr
- | NiceMutual Range TerminationCheck [NiceDeclaration]
- | NiceModule Range Access IsAbstract QName Telescope [Declaration]
- | NiceModuleMacro Range Access Name ModuleApplication OpenShortHand ImportDirective
- | NiceOpen Range QName ImportDirective
- | NiceImport Range QName (Maybe AsName) OpenShortHand ImportDirective
- | NicePragma Range Pragma
- | NiceRecSig Range Fixity' Access Name [LamBinding] Expr
- | NiceDataSig Range Fixity' Access Name [LamBinding] Expr
- | NiceFunClause Range Access IsAbstract TerminationCheck Declaration
- -- ^ a uncategorized function clause, could be a function clause
- -- without type signature or a pattern lhs (e.g. for irrefutable let)x
- | FunSig Range Fixity' Access IsInstance ArgInfo TerminationCheck Name Expr
- | FunDef Range [Declaration] Fixity' IsAbstract TerminationCheck Name [Clause] -- ^ block of function clauses (we have seen the type signature before)
- | DataDef Range Fixity' IsAbstract Name [LamBinding] [NiceConstructor]
- | RecDef Range Fixity' IsAbstract Name (Maybe (Ranged Induction)) (Maybe (ThingWithFixity Name)) [LamBinding] [NiceDeclaration]
- | NicePatternSyn Range Fixity' Name [Arg Name] Pattern
- | NiceUnquoteDecl Range Fixity' Access IsAbstract TerminationCheck Name Expr
- deriving (Typeable, Show)
+ = Axiom Range Fixity' Access IsInstance ArgInfo Name Expr
+ -- ^ Axioms and functions can be declared irrelevant. (Hiding should be NotHidden)
+ | NiceField Range Fixity' Access IsAbstract Name (Arg Expr)
+ | PrimitiveFunction Range Fixity' Access IsAbstract Name Expr
+ | NiceMutual Range TerminationCheck [NiceDeclaration]
+ | NiceModule Range Access IsAbstract QName Telescope [Declaration]
+ | NiceModuleMacro Range Access Name ModuleApplication OpenShortHand ImportDirective
+ | NiceOpen Range QName ImportDirective
+ | NiceImport Range QName (Maybe AsName) OpenShortHand ImportDirective
+ | NicePragma Range Pragma
+ | NiceRecSig Range Fixity' Access Name [LamBinding] Expr
+ | NiceDataSig Range Fixity' Access Name [LamBinding] Expr
+ | NiceFunClause Range Access IsAbstract TerminationCheck Declaration
+ -- ^ An uncategorized function clause, could be a function clause
+ -- without type signature or a pattern lhs (e.g. for irrefutable let).
+ -- The 'Declaration' is the actual 'FunClause'.
+ | FunSig Range Fixity' Access IsInstance ArgInfo TerminationCheck Name Expr
+ | FunDef Range [Declaration] Fixity' IsAbstract TerminationCheck Name [Clause]
+ -- ^ Block of function clauses (we have seen the type signature before).
+ -- The 'Declaration's are the original declarations that were processed
+ -- into this 'FunDef' and are only used in 'notSoNiceDeclaration'.
+ | DataDef Range Fixity' IsAbstract Name [LamBinding] [NiceConstructor]
+ | RecDef Range Fixity' IsAbstract Name (Maybe (Ranged Induction)) (Maybe (ThingWithFixity Name)) [LamBinding] [NiceDeclaration]
+ | NicePatternSyn Range Fixity' Name [Arg Name] Pattern
+ | NiceUnquoteDecl Range Fixity' Access IsInstance IsAbstract TerminationCheck Name Expr
+ deriving (Typeable, Show)
type TerminationCheck = Common.TerminationCheck Measure
@@ -121,6 +143,8 @@ data Clause = Clause Name LHS RHS WhereClause [Clause]
-- | The exception type.
data DeclarationException
= MultipleFixityDecls [(Name, [Fixity'])]
+ | InvalidName Name
+ | DuplicateDefinition Name
| MissingDefinition Name
| MissingWithClauses Name
| MissingTypeSignature LHS -- Andreas 2012-06-02: currently unused, remove after a while -- Fredrik 2012-09-20: now used, can we keep it?
@@ -147,6 +171,8 @@ data DeclarationException
instance HasRange DeclarationException where
getRange (MultipleFixityDecls xs) = getRange (fst $ head xs)
+ getRange (InvalidName x) = getRange x
+ getRange (DuplicateDefinition x) = getRange x
getRange (MissingDefinition x) = getRange x
getRange (MissingWithClauses x) = getRange x
getRange (MissingTypeSignature x) = getRange x
@@ -184,7 +210,7 @@ instance HasRange NiceDeclaration where
getRange (NiceDataSig r _ _ _ _ _) = r
getRange (NicePatternSyn r _ _ _ _) = r
getRange (NiceFunClause r _ _ _ _) = r
- getRange (NiceUnquoteDecl r _ _ _ _ _ _) = r
+ getRange (NiceUnquoteDecl r _ _ _ _ _ _ _) = r
instance Error DeclarationException where
noMsg = strMsg ""
@@ -192,46 +218,53 @@ instance Error DeclarationException where
-- These error messages can (should) be terminated by a dot ".",
-- there is no error context printed after them.
-instance Show DeclarationException where
- show (MultipleFixityDecls xs) = show $
+instance Pretty DeclarationException where
+ pretty (MultipleFixityDecls xs) =
sep [ fsep $ pwords "Multiple fixity or syntax declarations for"
, vcat $ map f xs
]
where
f (x, fs) = pretty x <> text ": " <+> fsep (map pretty fs)
- show (MissingDefinition x) = show $ fsep $
+ pretty (InvalidName x) = fsep $
+ pwords "Invalid name:" ++ [pretty x]
+ pretty (DuplicateDefinition x) = fsep $
+ pwords "Duplicate definition of" ++ [pretty x]
+ pretty (MissingDefinition x) = fsep $
pwords "Missing definition for" ++ [pretty x]
- show (MissingWithClauses x) = show $ fsep $
+ pretty (MissingWithClauses x) = fsep $
pwords "Missing with-clauses for function" ++ [pretty x]
- show (MissingTypeSignature x) = show $ fsep $
+ pretty (MissingTypeSignature x) = fsep $
pwords "Missing type signature for left hand side" ++ [pretty x]
- show (MissingDataSignature x) = show $ fsep $
+ pretty (MissingDataSignature x) = fsep $
pwords "Missing type signature for " ++ [pretty x]
- show (WrongDefinition x k k') = show $ fsep $ pretty x :
+ pretty (WrongDefinition x k k') = fsep $ pretty x :
pwords ("has been declared as a " ++ show k ++
", but is being defined as a " ++ show k')
- show (WrongParameters x) = show $ fsep $
+ pretty (WrongParameters x) = fsep $
pwords "List of parameters does not match previous signature for" ++ [pretty x]
- show (AmbiguousFunClauses lhs xs) = show $ fsep $
- pwords "More than one matching type signature for left hand side" ++ [pretty lhs] ++
- pwords "it could belong to any of:" ++ map pretty xs
- show (UnknownNamesInFixityDecl xs) = show $ fsep $
+ pretty (AmbiguousFunClauses lhs xs) = sep
+ [ fsep $
+ pwords "More than one matching type signature for left hand side " ++ [pretty lhs] ++
+ pwords "it could belong to any of:"
+ , vcat $ map (pretty . PrintRange) xs
+ ]
+ pretty (UnknownNamesInFixityDecl xs) = fsep $
pwords "The following names are not declared in the same scope as their syntax or fixity declaration (i.e., either not in scope at all, imported from another module, or declared in a super module):" ++ map pretty xs
- show (UselessPrivate _) = show $ fsep $
+ pretty (UselessPrivate _) = fsep $
pwords "Using private here has no effect. Private applies only to declarations that introduce new identifiers into the module, like type signatures and data, record, and module declarations."
- show (UselessAbstract _) = show $ fsep $
+ pretty (UselessAbstract _) = fsep $
pwords "Using abstract here has no effect. Abstract applies only definitions like data definitions, record type definitions and function clauses."
- show (UselessInstance _) = show $ fsep $
+ pretty (UselessInstance _) = fsep $
pwords "Using instance here has no effect. Instance applies only to declarations that introduce new identifiers into the module, like type signatures and axioms."
- show (WrongContentPostulateBlock _) = show $ fsep $
+ pretty (WrongContentPostulateBlock _) = fsep $
pwords "A postulate block can only contain type signatures or instance blocks"
- show (PragmaNoTerminationCheck _) = show $ fsep $
+ pretty (PragmaNoTerminationCheck _) = fsep $
pwords "Pragma {-# NO_TERMINATION_CHECK #-} has been removed. To skip the termination check, label your definitions either as {-# TERMINATING #-} or {-# NON_TERMINATING #-}."
- show (InvalidTerminationCheckPragma _) = show $ fsep $
+ pretty (InvalidTerminationCheckPragma _) = fsep $
pwords "Termination checking pragmas can only precede a mutual block or a function definition."
- show (InvalidMeasureMutual _) = show $ fsep $
+ pretty (InvalidMeasureMutual _) = fsep $
pwords "In a mutual block, either all functions must have the same (or no) termination checking pragma."
- show (NotAllowedInMutual nd) = show $ fsep $
+ pretty (NotAllowedInMutual nd) = fsep $
[text $ decl nd] ++ pwords "are not allowed in mutual blocks"
where
decl Axiom{} = "Postulates"
@@ -252,10 +285,10 @@ instance Show DeclarationException where
decl FunDef{} = __IMPOSSIBLE__
decl RecDef{} = __IMPOSSIBLE__
decl DataDef{} = __IMPOSSIBLE__
- show (Codata _) =
+ pretty (Codata _) = text $
"The codata construction has been removed. " ++
"Use the INFINITY builtin instead."
- show (DeclarationPanic s) = s
+ pretty (DeclarationPanic s) = text s
{--------------------------------------------------------------------------
The niceifier
@@ -336,15 +369,15 @@ data NiceEnv = NiceEnv
, fixs :: Fixities
}
-type LoneSigs = [(DataRecOrFun, Name)]
+type LoneSigs = Map Name DataRecOrFun
type Fixities = Map Name Fixity'
-- | Initial nicifier state.
initNiceEnv :: NiceEnv
initNiceEnv = NiceEnv
- { _loneSigs = []
- , fixs = Map.empty
+ { _loneSigs = empty
+ , fixs = empty
}
-- * Handling the lone signatures, stored to infer mutual blocks.
@@ -356,18 +389,22 @@ loneSigs f e = f (_loneSigs e) <&> \ s -> e { _loneSigs = s }
-- | Adding a lone signature to the state.
-addLoneSig :: DataRecOrFun -> Name -> Nice ()
-addLoneSig k x = loneSigs %= ((k, x) :)
+addLoneSig :: Name -> DataRecOrFun -> Nice ()
+addLoneSig x k = loneSigs %== \ s -> do
+ let (mr, s') = Map.insertLookupWithKey (\ k new old -> new) x k s
+ case mr of
+ Nothing -> return s'
+ Just{} -> throwError $ DuplicateDefinition x
-- | Remove a lone signature from the state.
removeLoneSig :: Name -> Nice ()
-removeLoneSig x = loneSigs %= filter (\ (k', x') -> x /= x')
+removeLoneSig x = loneSigs %= Map.delete x
-- | Search for forward type signature.
getSig :: Name -> Nice (Maybe DataRecOrFun)
-getSig n = fmap fst . List.find (\ (k, x) -> x == n) <$> use loneSigs
+getSig x = Map.lookup x <$> use loneSigs
-- | Check that no lone signatures are left in the state.
@@ -376,15 +413,17 @@ noLoneSigs = null <$> use loneSigs
-- | Ensure that all forward declarations have been given a definition.
-checkLoneSigs :: LoneSigs -> Nice ()
+checkLoneSigs :: [(Name, a)] -> Nice ()
checkLoneSigs xs =
case xs of
[] -> return ()
- (_, x):_ -> throwError $ MissingDefinition x
-
+ (x, _):_ -> throwError $ MissingDefinition x
+-- | Check whether name is not "_" and return its fixity.
getFixity :: Name -> Nice Fixity'
-getFixity x = gets $ Map.findWithDefault defaultFixity' x . fixs
+getFixity x = do
+ when (isUnderscore x) $ throwError $ InvalidName x
+ gets $ Map.findWithDefault defaultFixity' x . fixs
runNice :: Nice a -> Either DeclarationException a
runNice nice = nice `evalStateT` initNiceEnv
@@ -425,7 +464,7 @@ niceDeclarations ds = do
put $ initNiceEnv { fixs = fixs }
ds <- nice ds
-- Check that every signature got its definition.
- checkLoneSigs =<< use loneSigs
+ checkLoneSigs . Map.toList =<< use loneSigs
-- Note that loneSigs is ensured to be empty.
-- (Important, since inferMutualBlocks also uses loneSigs state).
inferMutualBlocks ds
@@ -467,7 +506,7 @@ niceDeclarations ds = do
OtherDecl -> (d :) <$> inferMutualBlocks ds
LoneDef _ x -> __IMPOSSIBLE__
LoneSig k x -> do
- addLoneSig k x
+ addLoneSig x k
(tcs, (ds0, ds1)) <- untilAllDefined [terminationCheck k] ds
tc <- combineTermChecks (getRange d) tcs
@@ -486,9 +525,9 @@ niceDeclarations ds = do
done <- noLoneSigs
if done then return (tc, ([], ds)) else
case ds of
- [] -> __IMPOSSIBLE__ <$ (checkLoneSigs =<< use loneSigs)
+ [] -> __IMPOSSIBLE__ <$ (checkLoneSigs . Map.toList =<< use loneSigs)
d : ds -> case declKind d of
- LoneSig k x -> addLoneSig k x >> cons d (untilAllDefined (terminationCheck k : tc) ds)
+ LoneSig k x -> addLoneSig x k >> cons d (untilAllDefined (terminationCheck k : tc) ds)
LoneDef k x -> removeLoneSig x >> cons d (untilAllDefined (terminationCheck k : tc) ds)
OtherDecl -> cons d (untilAllDefined tc ds)
where
@@ -512,8 +551,8 @@ niceDeclarations ds = do
nice (Pragma (TerminationCheckPragma r tc) : d@FunClause{} : ds) | notMeasure tc =
niceFunClause tc d ds
nice (Pragma (TerminationCheckPragma r tc) : ds@(UnquoteDecl{} : _)) | notMeasure tc = do
- NiceUnquoteDecl r f p a _ x e : ds <- nice ds
- return $ NiceUnquoteDecl r f p a tc x e : ds
+ NiceUnquoteDecl r f p a i _ x e : ds <- nice ds
+ return $ NiceUnquoteDecl r f p a i tc x e : ds
nice (d@TypeSig{} : Pragma (TerminationCheckPragma r (TerminationMeasure _ x)) : ds) =
niceTypeSig (TerminationMeasure r x) d ds
@@ -528,7 +567,7 @@ niceDeclarations ds = do
DataSig r CoInductive x tel t -> throwError (Codata r)
Data r CoInductive x tel t cs -> throwError (Codata r)
DataSig r Inductive x tel t -> do
- addLoneSig (DataName $ parameters tel) x
+ addLoneSig x (DataName $ parameters tel)
(++) <$> dataOrRec DataDef NiceDataSig niceAxioms r x tel (Just t) Nothing
<*> nice ds
Data r Inductive x tel t cs -> do
@@ -536,7 +575,7 @@ niceDeclarations ds = do
(++) <$> dataOrRec DataDef NiceDataSig niceAxioms r x tel t (Just cs)
<*> nice ds
RecordSig r x tel t -> do
- addLoneSig (RecName $ parameters tel) x
+ addLoneSig x (RecName $ parameters tel)
fx <- getFixity x
(NiceRecSig r fx PublicAccess x tel t :) <$> nice ds
Record r x i c tel t cs -> do
@@ -580,7 +619,7 @@ niceDeclarations ds = do
UnquoteDecl r x e -> do
fx <- getFixity x
- (NiceUnquoteDecl r fx PublicAccess ConcreteDef TerminationCheck x e :) <$> nice ds
+ (NiceUnquoteDecl r fx PublicAccess NotInstanceDef ConcreteDef TerminationCheck x e :) <$> nice ds
-- Andreas, AIM XX: do not forbid NO_TERMINATION_CHECK in maintenance version.
-- Pragma (TerminationCheckPragma r NoTerminationCheck) ->
-- throwError $ PragmaNoTerminationCheck r
@@ -590,7 +629,7 @@ niceDeclarations ds = do
niceFunClause :: TerminationCheck -> Declaration -> [Declaration] -> Nice [NiceDeclaration]
niceFunClause termCheck d@(FunClause lhs _ _) ds = do
- xs <- map snd . filter (isFunName . fst) <$> use loneSigs
+ xs <- map fst . filter (isFunName . snd) . Map.toList <$> use loneSigs
-- for each type signature 'x' waiting for clauses, we try
-- if we have some clauses for 'x'
fixs <- gets fixs
@@ -626,14 +665,14 @@ niceDeclarations ds = do
return $ d : ds1
-- case: clauses match more than one sigs (ambiguity)
- l -> throwError $ AmbiguousFunClauses lhs (map fst l) -- "ambiguous function clause; cannot assign it uniquely to one type signature"
+ l -> throwError $ AmbiguousFunClauses lhs $ reverse $ map fst l -- "ambiguous function clause; cannot assign it uniquely to one type signature"
niceFunClause _ _ _ = __IMPOSSIBLE__
niceTypeSig :: TerminationCheck -> Declaration -> [Declaration] -> Nice [NiceDeclaration]
niceTypeSig termCheck d@(TypeSig info x t) ds = do
fx <- getFixity x
-- register x as lone type signature, to recognize clauses later
- addLoneSig (FunName termCheck) x
+ addLoneSig x (FunName termCheck)
ds <- nice ds
return $ FunSig (getRange d) fx PublicAccess NotInstanceDef info termCheck x t : ds
niceTypeSig _ _ _ = __IMPOSSIBLE__
@@ -653,13 +692,15 @@ niceDeclarations ds = do
dataOrRec mkDef mkSig niceD r x tel mt mcs = do
mds <- traverse niceD mcs
f <- getFixity x
- return $
- [mkSig (fuseRange x t) f PublicAccess x tel t | Just t <- [mt] ] ++
- [mkDef (getRange x) f ConcreteDef x (concatMap dropType tel) ds | Just ds <- [mds] ]
+ return $ catMaybes $
+ [ mt <&> \ t -> mkSig (fuseRange x t) f PublicAccess x tel t
+ , mkDef r f ConcreteDef x (concatMap dropType tel) <$> mds
+ ]
where
- dropType (DomainFull (TypedBindings r (Common.Arg i (TBind _ xs _)))) =
- map (DomainFree i) xs
- dropType (DomainFull (TypedBindings _ (Common.Arg _ TLet{}))) = []
+ dropType :: LamBinding -> [LamBinding]
+ dropType (DomainFull (TypedBindings _r (Common.Arg ai (TBind _ xs _)))) =
+ map (mergeHiding . fmap (DomainFree ai)) xs
+ dropType (DomainFull (TypedBindings _r (Common.Arg _ TLet{}))) = []
dropType b@DomainFree{} = [b]
-- Translate axioms
@@ -702,10 +743,10 @@ niceDeclarations ds = do
d : expand p ps ds
where
expand _ _ [] = []
- expand p ps (FunClause (Ellipsis _ ps' eqs []) rhs wh : ds) =
- FunClause (LHS p (ps ++ ps') eqs []) rhs wh : expand p ps ds
- expand p ps (FunClause (Ellipsis _ ps' eqs es) rhs wh : ds) =
- FunClause (LHS p (ps ++ ps') eqs es) rhs wh : expand p (ps ++ ps') ds
+ expand p ps (FunClause (Ellipsis r ps' eqs []) rhs wh : ds) =
+ FunClause (LHS (setRange r p) ((setRange r ps) ++ ps') eqs []) rhs wh : expand p ps ds
+ expand p ps (FunClause (Ellipsis r ps' eqs es) rhs wh : ds) =
+ FunClause (LHS (setRange r p) ((setRange r ps) ++ ps') eqs es) rhs wh : expand p (ps ++ ps') ds
expand p ps (d@(FunClause (LHS _ _ _ []) _ _) : ds) =
d : expand p ps ds
expand _ _ (d@(FunClause (LHS p ps _ (_ : _)) _ _) : ds) =
@@ -807,10 +848,10 @@ niceDeclarations ds = do
isTypeSig d | LoneSig{} <- declKind d = True
isTypeSig _ = False
- sigNames = [ (k, x) | LoneSig k x <- map declKind ds ]
- defNames = [ (k, x) | LoneDef k x <- map declKind ds ]
+ sigNames = [ (x, k) | LoneSig k x <- map declKind ds ]
+ defNames = [ (x, k) | LoneDef k x <- map declKind ds ]
-- compute the set difference with equality just on names
- loneNames = [ (k, x) | (k, x) <- sigNames, List.all ((x /=) . snd) defNames ]
+ loneNames = [ (x, k) | (x, k) <- sigNames, List.all ((x /=) . fst) defNames ]
-- Andreas, 2013-02-28 (issue 804):
-- do not termination check a mutual block if any of its
@@ -818,7 +859,7 @@ niceDeclarations ds = do
termCheck (FunSig _ _ _ _ _ tc _ _) = tc
termCheck (FunDef _ _ _ _ tc _ _) = tc
termCheck (NiceMutual _ tc _) = tc
- termCheck (NiceUnquoteDecl _ _ _ _ tc _ _) = tc
+ termCheck (NiceUnquoteDecl _ _ _ _ _ tc _ _) = tc
termCheck _ = TerminationCheck
-- A mutual block cannot have a measure,
@@ -844,7 +885,7 @@ niceDeclarations ds = do
-- no effect on fields or primitives, the InAbstract field there is unused
NiceField r f p _ x e -> return $ NiceField r f p AbstractDef x e
PrimitiveFunction r f p _ x e -> return $ PrimitiveFunction r f p AbstractDef x e
- NiceUnquoteDecl r f p _ t x e -> return $ NiceUnquoteDecl r f p AbstractDef t x e
+ NiceUnquoteDecl r f p i _ t x e -> return $ NiceUnquoteDecl r f p i AbstractDef t x e
NiceModule{} -> return $ d
NiceModuleMacro{} -> return $ d
Axiom{} -> return $ d
@@ -895,7 +936,7 @@ niceDeclarations ds = do
NiceRecSig r f p x ls t -> (\ p -> NiceRecSig r f p x ls t) <$> setPrivate p
NiceDataSig r f p x ls t -> (\ p -> NiceDataSig r f p x ls t) <$> setPrivate p
NiceFunClause r p a termCheck d -> (\ p -> NiceFunClause r p a termCheck d) <$> setPrivate p
- NiceUnquoteDecl r f p a t x e -> (\ p -> NiceUnquoteDecl r f p a t x e) <$> setPrivate p
+ NiceUnquoteDecl r f p i a t x e -> (\ p -> NiceUnquoteDecl r f p i a t x e) <$> setPrivate p
NicePragma _ _ -> return $ d
NiceOpen _ _ _ -> return $ d
NiceImport _ _ _ _ _ -> return $ d
@@ -933,12 +974,12 @@ niceDeclarations ds = do
case d of
Axiom r f p i rel x e -> (\ i -> Axiom r f p i rel x e) <$> setInstance i
FunSig r f p i rel tc x e -> (\ i -> FunSig r f p i rel tc x e) <$> setInstance i
+ NiceUnquoteDecl r f p i a tc x e -> (\ i -> NiceUnquoteDecl r f p i a tc x e) <$> setInstance i
NiceMutual{} -> return $ d
NiceFunClause{} -> return $ d
FunDef{} -> return $ d
NiceField{} -> return $ d
PrimitiveFunction{} -> return $ d
- NiceUnquoteDecl{} -> return $ d
NiceRecSig{} -> return $ d
NiceDataSig{} -> return $ d
NiceModuleMacro{} -> return $ d
@@ -1055,5 +1096,4 @@ notSoNiceDeclaration d =
RecDef r _ _ x i c bs ds -> Record r x i (unThing <$> c) bs Nothing $ map notSoNiceDeclaration ds
where unThing (ThingWithFixity c _) = c
NicePatternSyn r _ n as p -> PatternSyn r n as p
- NiceUnquoteDecl r _ _ _ _ x e -> UnquoteDecl r x e
-
+ NiceUnquoteDecl r _ _ _ _ _ x e -> UnquoteDecl r x e
diff --git a/src/full/Agda/Syntax/Concrete/Generic.hs b/src/full/Agda/Syntax/Concrete/Generic.hs
index f499b2b..5e0fe80 100644
--- a/src/full/Agda/Syntax/Concrete/Generic.hs
+++ b/src/full/Agda/Syntax/Concrete/Generic.hs
@@ -1,9 +1,8 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
-- | Generic traversal and reduce for concrete syntax,
--- in the style of 'Agda.Syntax.Internal.Generic'.
+-- in the style of "Agda.Syntax.Internal.Generic".
--
-- However, here we use the terminology of 'Data.Traversable'.
@@ -100,7 +99,7 @@ instance ExprLike Expr where
Underscore{} -> f $ e0
RawApp r es -> f $ RawApp r $ mapE es
App r e es -> f $ App r (mapE e) $ mapE es
- OpApp r q es -> f $ OpApp r q $ mapE es
+ OpApp r q ns es -> f $ OpApp r q ns $ mapE es
WithApp r e es -> f $ WithApp r (mapE e) $ mapE es
HiddenArg r e -> f $ HiddenArg r $ mapE e
InstanceArg r e -> f $ InstanceArg r $ mapE e
diff --git a/src/full/Agda/Syntax/Concrete/Name.hs b/src/full/Agda/Syntax/Concrete/Name.hs
index 437b592..9ca524d 100644
--- a/src/full/Agda/Syntax/Concrete/Name.hs
+++ b/src/full/Agda/Syntax/Concrete/Name.hs
@@ -1,8 +1,7 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE PatternGuards #-}
{-| Names in the concrete syntax are just strings (or lists of strings for
qualified names).
@@ -42,7 +41,7 @@ data Name
| NoName !Range NameId -- ^ @_@.
deriving (Typeable)
-instance NFData Name
+instance NFData Name where rnf x = seq x ()
instance Underscore Name where
underscore = NoName noRange __IMPOSSIBLE__
@@ -249,32 +248,32 @@ instance IsNoName QName where
-- instead. Later, simply derive Show for these types:
instance Show Name where
- show (Name _ xs) = concatMap show xs
- show (NoName _ _) = "_"
+ show (Name _ xs) = concatMap show xs
+ show (NoName _ _) = "_"
instance Show NamePart where
- show Hole = "_"
- show (Id s) = rawNameToString s
+ show Hole = "_"
+ show (Id s) = rawNameToString s
instance Show QName where
- show (Qual m x) = show m ++ "." ++ show x
- show (QName x) = show x
+ show (Qual m x) = show m ++ "." ++ show x
+ show (QName x) = show x
------------------------------------------------------------------------
-- * Printing names
------------------------------------------------------------------------
instance Pretty Name where
- pretty (Name _ xs) = hcat $ map pretty xs
- pretty (NoName _ _) = text $ "_"
+ pretty (Name _ xs) = hcat $ map pretty xs
+ pretty (NoName _ _) = text $ "_"
instance Pretty NamePart where
- pretty Hole = text $ "_"
- pretty (Id s) = text $ rawNameToString s
+ pretty Hole = text $ "_"
+ pretty (Id s) = text $ rawNameToString s
instance Pretty QName where
- pretty (Qual m x) = pretty m <> pretty "." <> pretty x
- pretty (QName x) = pretty x
+ pretty (Qual m x) = pretty m <> pretty "." <> pretty x
+ pretty (QName x) = pretty x
instance Pretty TopLevelModuleName where
pretty (TopLevelModuleName ms) = text $ intercalate "." ms
diff --git a/src/full/Agda/Syntax/Concrete/Operators.hs b/src/full/Agda/Syntax/Concrete/Operators.hs
index 2fa1546..d37ad98 100644
--- a/src/full/Agda/Syntax/Concrete/Operators.hs
+++ b/src/full/Agda/Syntax/Concrete/Operators.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-| The parser doesn't know about operators and parses everything as normal
@@ -45,57 +45,54 @@ import Agda.Syntax.Scope.Base
import Agda.Syntax.Scope.Monad
import Agda.TypeChecking.Monad.Base (typeError, TypeError(..), LHSOrPatSyn(..))
-import Agda.TypeChecking.Monad.Benchmark (billSub)
import qualified Agda.TypeChecking.Monad.Benchmark as Bench
import Agda.TypeChecking.Monad.State (getScope)
import Agda.TypeChecking.Monad.Options
import Agda.Utils.Either
import Agda.Utils.ReadP
+#if MIN_VERSION_base(4,8,0)
+import Agda.Utils.List hiding ( uncons )
+#else
import Agda.Utils.List
+#endif
#include "undefined.h"
import Agda.Utils.Impossible
---------------------------------------------------------------------------
--- * Building the parser
+-- * Billing
---------------------------------------------------------------------------
-partsInScope :: FlatScope -> ScopeM (Set QName)
-partsInScope flat = do
- (names, ops) <- localNames flat
- let xs = concatMap parts names ++ concatMap notationNames ops
- return $ Set.fromList xs
- where
- qual xs x = foldr Qual (QName x) xs
- parts q = parts' (init $ qnameParts q) (unqualify q)
- parts' ms (NoName _ _) = []
- parts' ms x@(Name _ [_]) = [qual ms x]
- -- The first part should be qualified, but not the rest
- parts' ms x@(Name _ xs) = qual ms x : qual ms (Name noRange [first]) : [ QName $ Name noRange [i] | i <- iparts ]
- where
- first:iparts = [ i | i@(Id {}) <- xs ]
+-- | Bills the operator parser.
+
+billToParser :: ScopeM a -> ScopeM a
+billToParser = Bench.billTo [Bench.Parsing, Bench.Operators]
+
+---------------------------------------------------------------------------
+-- * Building the parser
+---------------------------------------------------------------------------
type FlatScope = Map QName [AbstractName]
--- | Compute all unqualified defined names in scope and their fixities.
--- Note that overloaded names (constructors) can have several fixities.
--- Then we 'chooseFixity'. (See issue 1194.)
-getDefinedNames :: [KindOfName] -> FlatScope -> [(QName, Fixity')]
+-- | Compute all defined names in scope and their fixities/notations.
+-- Note that overloaded names (constructors) can have several
+-- fixities/notations. Then we 'mergeNotations'. (See issue 1194.)
+getDefinedNames :: [KindOfName] -> FlatScope -> [[NewNotation]]
getDefinedNames kinds names =
- [ (x, chooseFixity fixs)
+ [ mergeNotations $
+ map (\d -> namesToNotation x (A.qnameName $ anameName d)) ds
| (x, ds) <- Map.toList names
, any ((`elem` kinds) . anameKind) ds
- , let fixs = map (A.nameFixity . A.qnameName . anameName) ds
- , not (null fixs)
+ , not (null ds)
-- Andreas, 2013-03-21 see Issue 822
-- Names can have different kinds, i.e., 'defined' and 'constructor'.
-- We need to consider all names that have *any* matching kind,
-- not only those whose first appearing kind is matching.
- ]
+ ]
--- | Compute all names (first component) and operators (second component) in
--- scope.
+-- | Compute all names (first component) and operators/notations
+-- (second component) in scope.
localNames :: FlatScope -> ScopeM ([QName], [NewNotation])
localNames flat = do
let defs = getDefinedNames allKindsOfNames flat
@@ -106,17 +103,16 @@ localNames flat = do
, "defs = " ++ show defs
, "locals= " ++ show locals
]
- return $ split $ uniqOn fst $ map localOp locals ++ defs
+ let localNots = map localOp locals
+ localNames = Set.fromList $ map notaName localNots
+ otherNots = filter (\n -> not (Set.member (notaName n) localNames))
+ (concat defs)
+ return $ split $ localNots ++ otherNots
where
- localOp (x, y) = (QName x, A.nameFixity y)
- split ops = partitionEithers $ concatMap opOrNot ops
-
- opOrNot (q, Fixity' fx syn) = Left q : map Right (notaFromName ++ nota)
- where
- notaFromName = case unqualify q of
- Name _ [_] -> []
- x -> [NewNotation q fx $ syntaxOf x]
- nota = if null syn then [] else [NewNotation q fx syn]
+ localOp (x, y) = namesToNotation (QName x) y
+ split ops = partitionEithers $ concatMap opOrNot ops
+ opOrNot n = Left (notaName n) :
+ if null (notation n) then [] else [Right n]
-- | Data structure filled in by @buildParsers@.
-- The top-level parser @pTop@ is of primary interest,
@@ -167,10 +163,10 @@ buildParsers r flat use = do
[ "names = " ++ show names
, "ops = " ++ show ops
, "cons = " ++ show cons ]
- let conparts = Set.fromList $ concatMap notationNames $ map oldToNewNotation cons
- opsparts = Set.fromList $ concatMap notationNames $ ops
+ let conparts = Set.fromList $ concatMap notationNames $ concat cons
+ opsparts = Set.fromList $ concatMap notationNames ops
allParts = Set.union conparts opsparts
- connames = Set.fromList $ map fst cons
+ connames = Set.fromList $ map (notaName . head) cons
(non, fix) = partition nonfix ops
set = Set.fromList names
isAtom x = case use of
@@ -192,23 +188,16 @@ buildParsers r flat use = do
level :: NewNotation -> Integer
level = fixityLevel . notaFixity
- isinfixl, isinfixr, isinfix, nonfix, isprefix, ispostfix :: NewNotation -> Bool
-
- isinfixl (NewNotation _ (LeftAssoc _ _) syn) = isInfix syn
- isinfixl _ = False
-
- isinfixr (NewNotation _ (RightAssoc _ _) syn) = isInfix syn
- isinfixr _ = False
+ nonfix, isprefix, ispostfix :: NewNotation -> Bool
+ nonfix = (== NonfixNotation) . notationKind . notation
+ isprefix = (== PrefixNotation) . notationKind . notation
+ ispostfix = (== PostfixNotation) . notationKind . notation
- isinfix (NewNotation _ (NonAssoc _ _) syn) = isInfix syn
- isinfix _ = False
-
- nonfix (NewNotation _ _ syn) = notationKind syn == NonfixNotation
- isprefix (NewNotation _ _ syn) = notationKind syn == PrefixNotation
- ispostfix (NewNotation _ _ syn) = notationKind syn == PostfixNotation
-
- isInfix :: Notation -> Bool
- isInfix syn = notationKind syn == InfixNotation
+ isinfix :: Associativity -> NewNotation -> Bool
+ isinfix ass syn =
+ notationKind (notation syn) == InfixNotation
+ &&
+ fixityAssoc (notaFixity syn) == ass
-- | Group operators by precedence level
order :: [NewNotation] -> [[NewNotation]]
@@ -221,9 +210,9 @@ buildParsers r flat use = do
[] -> [id]
fs -> fs
where
- inlfx = fixP infixlP isinfixl
- inrfx = fixP infixrP isinfixr
- infx = fixP infixP isinfix
+ inlfx = fixP infixlP (isinfix LeftAssoc)
+ inrfx = fixP infixrP (isinfix RightAssoc)
+ infx = fixP infixP (isinfix NonAssoc)
prefx = fixP prefixP isprefix
postfx = fixP postfixP ispostfix
@@ -242,7 +231,7 @@ instance IsExpr Expr where
exprView e = case e of
Ident x -> LocalV x
App _ e1 e2 -> AppV e1 e2
- OpApp r d es -> OpAppV d es
+ OpApp r d ns es -> OpAppV d ns es
HiddenArg _ e -> HiddenArgV e
InstanceArg _ e -> InstanceArgV e
Paren _ e -> ParenV e
@@ -250,33 +239,33 @@ instance IsExpr Expr where
Underscore{} -> WildV e
_ -> OtherV e
unExprView e = case e of
- LocalV x -> Ident x
- AppV e1 e2 -> App (fuseRange e1 e2) e1 e2
- OpAppV d es -> OpApp (fuseRange d es) d es
- HiddenArgV e -> HiddenArg (getRange e) e
+ LocalV x -> Ident x
+ AppV e1 e2 -> App (fuseRange e1 e2) e1 e2
+ OpAppV d ns es -> OpApp (fuseRange d es) d ns es
+ HiddenArgV e -> HiddenArg (getRange e) e
InstanceArgV e -> InstanceArg (getRange e) e
- ParenV e -> Paren (getRange e) e
- LamV bs e -> Lam (fuseRange bs e) bs e
- WildV e -> e
- OtherV e -> e
+ ParenV e -> Paren (getRange e) e
+ LamV bs e -> Lam (fuseRange bs e) bs e
+ WildV e -> e
+ OtherV e -> e
instance IsExpr Pattern where
exprView e = case e of
- IdentP x -> LocalV x
- AppP e1 e2 -> AppV e1 e2
- OpAppP r d es -> OpAppV d ((map . fmap . fmap) Ordinary es)
- HiddenP _ e -> HiddenArgV e
- InstanceP _ e -> InstanceArgV e
- ParenP _ e -> ParenV e
- WildP{} -> WildV e
- _ -> OtherV e
+ IdentP x -> LocalV x
+ AppP e1 e2 -> AppV e1 e2
+ OpAppP r d ns es -> OpAppV d ns ((map . fmap . fmap) Ordinary es)
+ HiddenP _ e -> HiddenArgV e
+ InstanceP _ e -> InstanceArgV e
+ ParenP _ e -> ParenV e
+ WildP{} -> WildV e
+ _ -> OtherV e
unExprView e = case e of
LocalV x -> IdentP x
AppV e1 e2 -> AppP e1 e2
- OpAppV d es -> let ess :: [NamedArg Pattern]
+ OpAppV d ns es -> let ess :: [NamedArg Pattern]
ess = (map . fmap . fmap) (fromOrdinary __IMPOSSIBLE__) es
- in OpAppP (fuseRange d es) d ess
+ in OpAppP (fuseRange d es) d ns ess
HiddenArgV e -> HiddenP (getRange e) e
InstanceArgV e -> InstanceP (getRange e) e
ParenV e -> ParenP (getRange e) e
@@ -284,46 +273,21 @@ instance IsExpr Pattern where
WildV e -> e
OtherV e -> e
-{- TRASH
-instance IsExpr LHSCore where
- exprView e = case e of
- LHSHead f ps -> foldl AppV (LocalV f) $ map exprView ps
- LHSProj d ps1 e ps2 -> foldl AppV (LocalV d) $
- map exprView ps1 ++ exprView e : map exprView ps2
- unExprView e = LHSHead f ps
- where p :: Pattern
- p = unExprView
- (f, ps) = lhsArgs p
--}
-
---------------------------------------------------------------------------
-- * Helpers for pattern and lhs parsing
---------------------------------------------------------------------------
--- Andreas, 2011-11-24 moved here from ConcreteToAbstract
-lhsArgs :: Pattern -> (Name, [NamedArg Pattern])
-lhsArgs p = case lhsArgs' p of
- Just (x, args) -> (x, args)
- Nothing -> __IMPOSSIBLE__
-
--- | @lhsArgs' p@ splits a lhs @f ps@, given as a pattern @p@,
--- into @(f, ps)@.
-lhsArgs' :: Pattern -> Maybe (Name, [NamedArg Pattern])
-lhsArgs' p = case patternAppView p of
- Common.Arg _ (Named _ (IdentP (QName x))) : ps -> Just (x, ps)
- _ -> Nothing
-
-- | View a pattern @p@ as a list @p0 .. pn@ where @p0@ is the identifier
-- (in most cases a constructor).
--
-- Pattern needs to be parsed already (operators resolved).
patternAppView :: Pattern -> [NamedArg Pattern]
patternAppView p = case p of
- AppP p arg -> patternAppView p ++ [arg]
- OpAppP _ x ps -> defaultNamedArg (IdentP x) : ps
- ParenP _ p -> patternAppView p
- RawAppP _ _ -> __IMPOSSIBLE__
- _ -> [ defaultNamedArg p ]
+ AppP p arg -> patternAppView p ++ [arg]
+ OpAppP _ x _ ps -> defaultNamedArg (IdentP x) : ps
+ ParenP _ p -> patternAppView p
+ RawAppP _ _ -> __IMPOSSIBLE__
+ _ -> [ defaultNamedArg p ]
---------------------------------------------------------------------------
@@ -336,7 +300,7 @@ parsePat prs p = case p of
AppP p (Common.Arg info q) ->
fullParen' <$> (AppP <$> parsePat prs p <*> (Common.Arg info <$> traverse (parsePat prs) q))
RawAppP _ ps -> fullParen' <$> (parsePat prs =<< parse prs ps)
- OpAppP r d ps -> fullParen' . OpAppP r d <$> (mapM . traverse . traverse) (parsePat prs) ps
+ OpAppP r d ns ps -> fullParen' . OpAppP r d ns <$> (mapM . traverse . traverse) (parsePat prs) ps
HiddenP _ _ -> fail "bad hidden argument"
InstanceP _ _ -> fail "bad instance argument"
AsP r x p -> AsP r x <$> parsePat prs p
@@ -402,7 +366,8 @@ parseLHS' lhsOrPatSyn top p = do
rs -> typeError $ AmbiguousParseForLHS lhsOrPatSyn p $
map (fullParen . fst) rs
where
- getNames kinds flat = map fst $ getDefinedNames kinds flat
+ getNames kinds flat =
+ map (notaName . head) $ getDefinedNames kinds flat
-- validPattern returns an empty or singleton list (morally a Maybe)
validPattern :: PatternCheckConfig -> Pattern -> [(Pattern, ParseLHS)]
@@ -461,7 +426,7 @@ classifyPattern conf p =
-- intended _* applied to true, or as true applied to a variable *. If we
-- check arities this problem won't appear.
parseLHS :: Name -> Pattern -> ScopeM LHSCore
-parseLHS top p = do
+parseLHS top p = billToParser $ do
res <- parseLHS' IsLHS (Just top) p
case res of
Right (f, lhs) -> return lhs
@@ -480,7 +445,7 @@ parsePatternSyn :: Pattern -> ScopeM Pattern
parsePatternSyn = parsePatternOrSyn IsPatSyn
parsePatternOrSyn :: LHSOrPatSyn -> Pattern -> ScopeM Pattern
-parsePatternOrSyn lhsOrPatSyn p = do
+parsePatternOrSyn lhsOrPatSyn p = billToParser $ do
res <- parseLHS' lhsOrPatSyn Nothing p
case res of
Left p -> return p
@@ -502,7 +467,7 @@ validConPattern cons p = case appView p of
appView :: Pattern -> [Pattern]
appView p = case p of
AppP p a -> appView p ++ [namedArg a]
- OpAppP _ op ps -> IdentP op : map namedArg ps
+ OpAppP _ op _ ps -> IdentP op : map namedArg ps
ParenP _ p -> appView p
RawAppP _ _ -> __IMPOSSIBLE__
HiddenP _ _ -> __IMPOSSIBLE__
@@ -517,7 +482,7 @@ patternQNames p = case p of
ParenP _ p -> patternQNames p
HiddenP _ p -> patternQNames (namedThing p)
InstanceP _ p -> patternQNames (namedThing p)
- OpAppP r d ps -> __IMPOSSIBLE__
+ OpAppP r d _ ps -> __IMPOSSIBLE__
AppP{} -> __IMPOSSIBLE__
AsP r x p -> patternQNames p
AbsurdP{} -> []
@@ -536,25 +501,16 @@ qualifierModules qs =
-- | Parse a list of expressions into an application.
parseApplication :: [Expr] -> ScopeM Expr
parseApplication [e] = return e
-parseApplication es = do
+parseApplication es = billToParser $ do
-- Build the parser
let ms = qualifierModules [ q | Ident q <- es ]
flat <- flattenScope ms <$> getScope
- -- Andreas, 2014-04-27 Time for building the parser is negligible
- p <- -- billSub [Bench.Parsing, Bench.Operators, Bench.BuildParser] $
- buildParsers (getRange es) flat UseBoundNames
+ p <- buildParsers (getRange es) flat UseBoundNames
-- Parse
case force $ parse (pTop p) es of
[e] -> return e
- [] -> do
- -- When the parser fails and a name is not in scope, it is more
- -- useful to say that to the user rather than just "failed".
- inScope <- partsInScope flat
- case [ x | Ident x <- es, not (Set.member x inScope) ] of
- [] -> typeError $ NoParseForApplication es
- xs -> typeError $ NotInScope xs
-
+ [] -> typeError $ NoParseForApplication es
es' -> typeError $ AmbiguousParseForApplication es $ map fullParen es'
parseModuleIdentifier :: Expr -> ScopeM QName
@@ -562,7 +518,7 @@ parseModuleIdentifier (Ident m) = return m
parseModuleIdentifier e = typeError $ NotAModuleExpr e
parseRawModuleApplication :: [Expr] -> ScopeM (QName, [NamedArg Expr])
-parseRawModuleApplication es = do
+parseRawModuleApplication es = billToParser $ do
let e : es_args = es
m <- parseModuleIdentifier e
@@ -574,12 +530,7 @@ parseRawModuleApplication es = do
-- Parse
case {-force $-} parse (pArgs p) es_args of -- TODO: not sure about forcing
[as] -> return (m, as)
- [] -> do
- inScope <- partsInScope flat
- case [ x | Ident x <- es_args, not (Set.member x inScope) ] of
- [] -> typeError $ NoParseForApplication es
- xs -> typeError $ NotInScope xs
-
+ [] -> typeError $ NoParseForApplication es
ass -> do
let f = fullParen . foldl (App noRange) (Ident m)
typeError $ AmbiguousParseForApplication es
@@ -619,7 +570,7 @@ fullParen' e = case exprView e of
Hidden -> e2
Instance -> e2
NotHidden -> fullParen' <$> e2
- OpAppV x es -> par $ unExprView $ OpAppV x $ (map . fmap . fmap . fmap) fullParen' es
+ OpAppV x ns es -> par $ unExprView $ OpAppV x ns $ (map . fmap . fmap . fmap) fullParen' es
LamV bs e -> par $ unExprView $ LamV bs (fullParen e)
where
par = unExprView . ParenV
diff --git a/src/full/Agda/Syntax/Concrete/Operators/Parser.hs b/src/full/Agda/Syntax/Concrete/Operators/Parser.hs
index b8e5a55..28ce619 100644
--- a/src/full/Agda/Syntax/Concrete/Operators/Parser.hs
+++ b/src/full/Agda/Syntax/Concrete/Operators/Parser.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Agda.Syntax.Concrete.Operators.Parser where
@@ -6,15 +6,20 @@ module Agda.Syntax.Concrete.Operators.Parser where
import Control.Exception (throw)
import Data.Maybe
+import Data.Set (Set)
import Agda.Syntax.Position
+import qualified Agda.Syntax.Abstract.Name as A
import Agda.Syntax.Common hiding (Arg, Dom, NamedArg)
import Agda.Syntax.Fixity
import Agda.Syntax.Notation
import Agda.Syntax.Concrete
+
import Agda.TypeChecking.Monad.Base (TCErr(Exception))
-import Agda.Utils.ReadP
+
import Agda.Utils.Monad
+import Agda.Utils.Pretty
+import Agda.Utils.ReadP
#include "undefined.h"
import Agda.Utils.Impossible
@@ -24,7 +29,9 @@ data ExprView e
| WildV e
| OtherV e
| AppV e (NamedArg e)
- | OpAppV QName [NamedArg (OpApp e)]
+ | OpAppV QName (Set A.Name) [NamedArg (OpApp e)]
+ -- ^ The 'QName' is possibly ambiguous, but it must correspond
+ -- to one of the names in the set.
| HiddenArgV (Named_ e)
| InstanceArgV (Named_ e)
| LamV [LamBinding] e
@@ -79,8 +86,9 @@ postop middleP = do
-- Note: it would be better to take the decision of "postprocessing" at the same
-- place as where the holes are discarded, however that would require a dependently
-- typed function (or duplicated code)
-opP :: IsExpr e => ReadP e e -> NewNotation -> ReadP e (NewNotation,Range,[e])
-opP p nsyn@(NewNotation q _ syn) = do
+opP :: IsExpr e =>
+ ReadP e e -> NewNotation -> ReadP e (NewNotation,Range,[e])
+opP p nsyn@(NewNotation q _ _ syn) = do
(range,es) <- worker (init $ qnameParts q) $ removeExternalHoles syn
return (nsyn,range,es)
where worker ms [IdPart x] = do r <- partP ms x; return (r,[])
@@ -97,7 +105,8 @@ opP p nsyn@(NewNotation q _ syn) = do
-- | Given a name with a syntax spec, and a list of parsed expressions
-- fitting it, rebuild the expression.
rebuild :: forall e. IsExpr e => NewNotation -> Range -> [e] -> e
-rebuild (NewNotation name _ syn) r es = unExprView $ OpAppV (setRange r name) exprs
+rebuild (NewNotation name names _ syn) r es =
+ unExprView $ OpAppV (setRange r name) names exprs
where
exprs = map findExprFor [0..lastHole]
filledHoles = zip es (filter isAHole syn)
@@ -118,7 +127,8 @@ rebuildBinding :: IsExpr e => ExprView e -> LamBinding
rebuildBinding (LocalV (QName name)) = DomainFree defaultArgInfo $ mkBoundName_ name
rebuildBinding (WildV e) =
DomainFree defaultArgInfo $ mkBoundName_ $ Name noRange [Hole]
-rebuildBinding e = throw $ Exception (getRange e) "Expected variable name in binding position"
+rebuildBinding e = throw $ Exception (getRange e) $
+ text "Expected variable name in binding position"
-- | Parse using the appropriate fixity, given a parser parsing the
-- operator part, the name of the operator, and a parser of
diff --git a/src/full/Agda/Syntax/Concrete/Pretty.hs b/src/full/Agda/Syntax/Concrete/Pretty.hs
index c2fe806..aa86a7b 100644
--- a/src/full/Agda/Syntax/Concrete/Pretty.hs
+++ b/src/full/Agda/Syntax/Concrete/Pretty.hs
@@ -1,13 +1,14 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
+
{-| Pretty printer for the concrete syntax.
-}
module Agda.Syntax.Concrete.Pretty where
+import Prelude hiding (null)
+
import Data.Char
import Data.Functor
import Data.Maybe
@@ -20,6 +21,8 @@ import Agda.Syntax.Literal
import Agda.Syntax.Notation
import Agda.Syntax.Position
+import Agda.Utils.Functor
+import Agda.Utils.Null
import Agda.Utils.Pretty
import Agda.Utils.String
@@ -64,28 +67,19 @@ arrow, lambda :: Doc
arrow = text "\x2192"
lambda = text "\x03bb"
-pHidden :: Pretty a => ArgInfo -> a -> Doc
-pHidden i = bracks h . pretty
- where bracks Hidden = braces'
- bracks Instance = dbraces
- bracks NotHidden= id
- h = argInfoHiding i
-
-pRelevance :: Pretty a => ArgInfo -> a -> Doc
-pRelevance i a =
- let d = pretty a
- in if render d == "_" then d else pretty (argInfoRelevance i) <> d
-{-
-pRelevance Forced a = pretty a
-pRelevance UnusedArg a = pretty a
-pRelevance Relevant a = pretty a
-pRelevance Irrelevant a =
- let d = pretty a
- in if render d == "_" then d else text "." <> d
-pRelevance NonStrict a =
- let d = pretty a
- in if render d == "_" then d else text ".." <> d
--}
+-- | @prettyHiding info visible doc@ puts the correct braces
+-- around @doc@ according to info @info@ and returns
+-- @visible doc@ if the we deal with a visible thing.
+prettyHiding :: LensHiding a => a -> (Doc -> Doc) -> Doc -> Doc
+prettyHiding a parens =
+ case getHiding a of
+ Hidden -> braces'
+ Instance -> dbraces
+ NotHidden -> parens
+
+prettyRelevance :: LensRelevance a => a -> Doc -> Doc
+prettyRelevance a d =
+ if render d == "_" then d else pretty (getRelevance a) <> d
instance (Pretty a, Pretty b) => Pretty (a, b) where
pretty (a, b) = parens $ pretty a <> comma <+> pretty b
@@ -93,8 +87,11 @@ instance (Pretty a, Pretty b) => Pretty (a, b) where
instance Pretty (ThingWithFixity Name) where
pretty (ThingWithFixity n _) = pretty n
+instance Pretty a => Pretty (WithHiding a) where
+ pretty w = prettyHiding w id $ pretty $ dget w
+
instance Pretty Relevance where
- pretty Forced = empty
+ pretty Forced{} = empty
pretty UnusedArg = empty
pretty Relevant = empty
pretty Irrelevant = text "."
@@ -123,8 +120,8 @@ instance Pretty Expr where
-- sep [ pretty e1
-- , nest 2 $ fsep $ map pretty args
-- ]
- RawApp _ es -> fsep $ map pretty es
- OpApp _ q es -> fsep $ prettyOpApp q es
+ RawApp _ es -> fsep $ map pretty es
+ OpApp _ q _ es -> fsep $ prettyOpApp q es
WithApp _ e es -> fsep $
pretty e : map ((text "|" <+>) . pretty) es
@@ -193,21 +190,18 @@ instance Pretty BoundName where
instance Pretty LamBinding where
-- TODO guilhem: colors are unused (colored syntax disallowed)
- pretty (DomainFree i x) = pRelevance i $ pHidden i $ pretty x
+ pretty (DomainFree i x) = prettyRelevance i $ prettyHiding i id $ pretty x
pretty (DomainFull b) = pretty b
instance Pretty TypedBindings where
- pretty (TypedBindings _ a) =
- pRelevance (argInfo a) $ bracks $ pretty $ WithColors (argColors a) $ unArg a
+ pretty (TypedBindings _ a) = prettyRelevance a $ prettyHiding a p $
+ pretty $ WithColors (argColors a) $ unArg a
where
- bracks = case getHiding a of
- Hidden -> braces'
- Instance -> dbraces
- NotHidden | isMeta (unArg a) -> id
- | otherwise -> parens
+ p | isUnderscore (unArg a) = id
+ | otherwise = parens
- isMeta (TBind _ _ (Underscore _ Nothing)) = True
- isMeta _ = False
+ isUnderscore (TBind _ _ (Underscore _ Nothing)) = True
+ isUnderscore _ = False
newtype Tel = Tel Telescope
@@ -247,7 +241,7 @@ instance Pretty TypedBinding where
smashTel :: Telescope -> Telescope
smashTel (TypedBindings r (Common.Arg i (TBind r' xs e)) :
TypedBindings _ (Common.Arg i' (TBind _ ys e')) : tel)
- | show i == show i' && show e == show e' && all isUnnamed (xs ++ ys) =
+ | show i == show i' && show e == show e' && all (isUnnamed . dget) (xs ++ ys) =
smashTel (TypedBindings r (Common.Arg i (TBind r' (xs ++ ys) e)) : tel)
where
isUnnamed x = boundLabel x == boundName x
@@ -305,13 +299,13 @@ instance Pretty Declaration where
pretty d =
case d of
TypeSig i x e ->
- sep [ pRelevance i $ pretty x <+> pColors ":" (argInfoColors i)
+ sep [ prettyRelevance i $ pretty x <+> pColors ":" (argInfoColors i)
, nest 2 $ pretty e
]
Field x (Common.Arg i e) ->
sep [ text "field"
- , nest 2 $ pRelevance i $ pHidden i $
- TypeSig (i {argInfoRelevance = Relevant}) x e
+ , nest 2 $ prettyRelevance i $ prettyHiding i id $
+ pretty $ TypeSig (i {argInfoRelevance = Relevant}) x e
]
FunClause lhs rhs wh ->
sep [ pretty lhs
@@ -456,9 +450,12 @@ instance Pretty Pragma where
TerminationMeasure _ x -> hsep $ [text "MEASURE", pretty x]
instance Pretty Fixity where
- pretty (LeftAssoc _ n) = text "infixl" <+> text (show n)
- pretty (RightAssoc _ n) = text "infixr" <+> text (show n)
- pretty (NonAssoc _ n) = text "infix" <+> text (show n)
+ pretty (Fixity _ n ass) = text s <+> text (show n)
+ where
+ s = case ass of
+ LeftAssoc -> "infixl"
+ RightAssoc -> "infixr"
+ NonAssoc -> "infix"
instance Pretty GenPart where
pretty (IdPart x) = text x
@@ -478,7 +475,7 @@ instance Pretty e => Pretty (Arg e) where
-- Andreas 2010-09-24: and in record fields
pretty a = -- pRelevance r $
-- TODO guilhem: print colors
- pHidden (argInfo a) $ unArg a
+ prettyHiding (argInfo a) id $ pretty $ unArg a
instance Pretty e => Pretty (Named_ e) where
pretty (Named Nothing e) = pretty e
@@ -490,19 +487,19 @@ instance Pretty [Pattern] where
instance Pretty Pattern where
pretty p =
case p of
- IdentP x -> pretty x
- AppP p1 p2 -> sep [ pretty p1, nest 2 $ pretty p2 ]
- RawAppP _ ps -> fsep $ map pretty ps
- OpAppP _ q ps -> fsep $ prettyOpApp q ps
- HiddenP _ p -> braces' $ pretty p
- InstanceP _ p -> dbraces $ pretty p
- ParenP _ p -> parens $ pretty p
- WildP _ -> underscore
- AsP _ x p -> pretty x <> text "@" <> pretty p
- DotP _ p -> text "." <> pretty p
- AbsurdP _ -> text "()"
- LitP l -> pretty l
- QuoteP _ -> text "quote"
+ IdentP x -> pretty x
+ AppP p1 p2 -> sep [ pretty p1, nest 2 $ pretty p2 ]
+ RawAppP _ ps -> fsep $ map pretty ps
+ OpAppP _ q _ ps -> fsep $ prettyOpApp q ps
+ HiddenP _ p -> braces' $ pretty p
+ InstanceP _ p -> dbraces $ pretty p
+ ParenP _ p -> parens $ pretty p
+ WildP _ -> underscore
+ AsP _ x p -> pretty x <> text "@" <> pretty p
+ DotP _ p -> text "." <> pretty p
+ AbsurdP _ -> text "()"
+ LitP l -> pretty l
+ QuoteP _ -> text "quote"
prettyOpApp :: Pretty a => QName -> [a] -> [Doc]
prettyOpApp q es = prOp ms xs es
diff --git a/src/full/Agda/Syntax/Fixity.hs b/src/full/Agda/Syntax/Fixity.hs
index ddf7947..55d2c82 100644
--- a/src/full/Agda/Syntax/Fixity.hs
+++ b/src/full/Agda/Syntax/Fixity.hs
@@ -1,24 +1,32 @@
+{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE DeriveTraversable #-}
{-| Definitions for fixity, precedence levels, and declared syntax.
-}
module Agda.Syntax.Fixity where
import Data.Foldable
+import Data.Function
import Data.List as List
+import Data.Set (Set)
+import qualified Data.Set as Set
import Data.Traversable
import Data.Typeable (Typeable)
import Agda.Syntax.Position
import Agda.Syntax.Common
+import {-# SOURCE #-} qualified Agda.Syntax.Abstract.Name as A
import Agda.Syntax.Concrete.Name
import Agda.Syntax.Notation
import Agda.Utils.List
+#include "undefined.h"
+import Agda.Utils.Impossible
+
-- * Notation coupled with 'Fixity'
-- | The notation is handled as the fixity in the renamer.
@@ -36,27 +44,34 @@ data ThingWithFixity x = ThingWithFixity x Fixity'
-- | All the notation information related to a name.
data NewNotation = NewNotation
{ notaName :: QName
- -- ^ The concrete name the syntax or fixity belongs to.
+ , notaNames :: Set A.Name
+ -- ^ The names the syntax and/or fixity belong to.
+ --
+ -- Invariant: The set is non-empty. Every name in the list matches
+ -- 'notaName'.
, notaFixity :: Fixity
- -- ^ Associativity and precedence (fixity) of the name.
+ -- ^ Associativity and precedence (fixity) of the names.
, notation :: Notation
- -- ^ Syntax associated with the name.
+ -- ^ Syntax associated with the names.
} deriving (Typeable, Show)
--- | If an operator has no specific notation, recover it from its name.
-oldToNewNotation :: (QName, Fixity') -> NewNotation
-oldToNewNotation (name, Fixity' f syn) = NewNotation
- { notaName = name
+-- | If an operator has no specific notation, then it is computed from
+-- its name.
+namesToNotation :: QName -> A.Name -> NewNotation
+namesToNotation q n = NewNotation
+ { notaName = q
+ , notaNames = Set.singleton n
, notaFixity = f
- , notation = if null syn then syntaxOf $ unqualify name else syn
+ , notation = if null syn then syntaxOf $ unqualify q else syn
}
+ where Fixity' f syn = A.nameFixity n
-- | Return the 'IdPart's of a notation, the first part qualified,
-- the other parts unqualified.
-- This allows for qualified use of operators, e.g.,
-- @M.for x ∈ xs return e@, or @x ℕ.+ y@.
notationNames :: NewNotation -> [QName]
-notationNames (NewNotation q _ parts) =
+notationNames (NewNotation q _ _ parts) =
zipWith ($) (reQualify : repeat QName) [Name noRange [Id x] | IdPart x <- parts ]
where
-- The qualification of @q@.
@@ -84,44 +99,59 @@ syntaxOf (Name _ xs) = mkSyn 0 xs
defaultFixity' :: Fixity'
defaultFixity' = Fixity' defaultFixity defaultNotation
--- | Removes copies of @defaultFixity'@ from a list of fixities.
--- Never returns an empty list, though, rather a singleton list
--- consisting of @defaultFixity'@.
-interestingFixities :: [Fixity'] -> [Fixity']
-interestingFixities fixs = if null fixs' then [defaultFixity'] else fixs'
- where fixs' = filter (not . (== defaultFixity')) fixs
+-- | Merges all 'NewNotation's that have the same notation.
+--
+-- If all 'NewNotation's with a given notation have the same fixity,
+-- then this fixity is preserved, and otherwise it is replaced by
+-- 'defaultFixity'.
+--
+-- Precondition: No 'A.Name' may occur in more than one list element.
+-- Every 'NewNotation' must have the same 'notaName'.
+--
+-- Postcondition: No 'A.Name' occurs in more than one list element.
+mergeNotations :: [NewNotation] -> [NewNotation]
+mergeNotations = map (merge . fixFixities) . groupOn notation
+ where
+ fixFixities ns
+ | allEqual (map notaFixity ns) = ns
+ | otherwise =
+ map (\n -> n { notaFixity = defaultFixity }) ns
--- | If different interesting fixities are available for the same symbol,
--- we take none of them.
-chooseFixity :: [Fixity'] -> Fixity'
-chooseFixity fixs = if allEqual fixs' then head fixs' else defaultFixity'
- where fixs' = interestingFixities fixs
+ merge :: [NewNotation] -> NewNotation
+ merge [] = __IMPOSSIBLE__
+ merge ns@(n : _) = n { notaNames = Set.unions $ map notaNames ns }
-- * Fixity
+-- | Associativity.
+
+data Associativity = NonAssoc | LeftAssoc | RightAssoc
+ deriving (Eq, Ord, Show, Typeable)
+
-- | Fixity of operators.
-data Fixity
- = LeftAssoc { fixityRange :: Range, fixityLevel :: Integer }
- | RightAssoc { fixityRange :: Range, fixityLevel :: Integer }
- | NonAssoc { fixityRange :: Range, fixityLevel :: Integer }
+data Fixity =
+ Fixity { fixityRange :: Range
+ , fixityLevel :: Integer
+ , fixityAssoc :: Associativity
+ }
deriving (Typeable, Show)
instance Eq Fixity where
- LeftAssoc _ n == LeftAssoc _ m = n == m
- RightAssoc _ n == RightAssoc _ m = n == m
- NonAssoc _ n == NonAssoc _ m = n == m
- _ == _ = False
+ f1 == f2 = compare f1 f2 == EQ
+
+instance Ord Fixity where
+ compare = compare `on` (\f -> (fixityLevel f, fixityAssoc f))
-- For @instance Pretty Fixity@, see Agda.Syntax.Concrete.Pretty
-- | The default fixity. Currently defined to be @'NonAssoc' 20@.
defaultFixity :: Fixity
-defaultFixity = NonAssoc noRange 20
+defaultFixity = Fixity noRange 20 NonAssoc
-- | Hack used for @syntax@ facility.
noFixity :: Fixity
-noFixity = NonAssoc noRange (negate 666)
+noFixity = Fixity noRange (negate 666) NonAssoc
-- Ts,ts,ts, why the number of the beast? Revelation 13, 18
--
-- It's not the number of the beast, it's the negation of the
@@ -150,10 +180,10 @@ hiddenArgumentCtx Instance = TopCtx
-- | Do we need to bracket an operator application of the given fixity
-- in a context with the given precedence.
opBrackets :: Fixity -> Precedence -> Bool
-opBrackets (LeftAssoc _ n1)
- (LeftOperandCtx (LeftAssoc _ n2)) | n1 >= n2 = False
-opBrackets (RightAssoc _ n1)
- (RightOperandCtx (RightAssoc _ n2)) | n1 >= n2 = False
+opBrackets (Fixity _ n1 LeftAssoc)
+ (LeftOperandCtx (Fixity _ n2 LeftAssoc)) | n1 >= n2 = False
+opBrackets (Fixity _ n1 RightAssoc)
+ (RightOperandCtx (Fixity _ n2 RightAssoc)) | n1 >= n2 = False
opBrackets f1
(LeftOperandCtx f2) | fixityLevel f1 > fixityLevel f2 = False
opBrackets f1
@@ -204,9 +234,7 @@ instance HasRange Fixity where
getRange = fixityRange
instance KillRange Fixity where
- killRange (LeftAssoc _ n) = LeftAssoc noRange n
- killRange (RightAssoc _ n) = RightAssoc noRange n
- killRange (NonAssoc _ n) = NonAssoc noRange n
+ killRange f = f { fixityRange = noRange }
instance KillRange Fixity' where
- killRange (Fixity' f n) = killRange1 (flip Fixity' n) f
+ killRange (Fixity' f n) = killRange2 Fixity' f n
diff --git a/src/full/Agda/Syntax/Fixity.hs-boot b/src/full/Agda/Syntax/Fixity.hs-boot
new file mode 100644
index 0000000..ae7c31c
--- /dev/null
+++ b/src/full/Agda/Syntax/Fixity.hs-boot
@@ -0,0 +1,3 @@
+module Agda.Syntax.Fixity where
+
+data Fixity'
diff --git a/src/full/Agda/Syntax/Info.hs b/src/full/Agda/Syntax/Info.hs
index 5c91955..98d1109 100644
--- a/src/full/Agda/Syntax/Info.hs
+++ b/src/full/Agda/Syntax/Info.hs
@@ -1,6 +1,6 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
{-| An info object contains additional information about a piece of abstract
diff --git a/src/full/Agda/Syntax/Internal.hs b/src/full/Agda/Syntax/Internal.hs
index 5fda241..e586727 100644
--- a/src/full/Agda/Syntax/Internal.hs
+++ b/src/full/Agda/Syntax/Internal.hs
@@ -1,13 +1,14 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+-- GHC 7.4.2 requires this layout for the pragmas. See Issue 1460.
+{-# LANGUAGE CPP,
+ DeriveDataTypeable,
+ DeriveFoldable,
+ DeriveFunctor,
+ DeriveTraversable,
+ FlexibleInstances,
+ GeneralizedNewtypeDeriving,
+ MultiParamTypeClasses,
+ StandaloneDeriving,
+ TemplateHaskell #-}
module Agda.Syntax.Internal
( module Agda.Syntax.Internal
@@ -18,15 +19,22 @@ module Agda.Syntax.Internal
import Prelude hiding (foldr, mapM, null)
import Control.Arrow ((***))
-import Control.Applicative
+import Control.Applicative hiding (empty)
import Control.Monad.Identity hiding (mapM)
import Control.Monad.State hiding (mapM)
import Control.Parallel
-import Data.Foldable
+import Data.Foldable ( Foldable, foldMap )
import Data.Function
import qualified Data.List as List
import Data.Maybe
+import Data.Monoid
+
+-- base-4.7 defines the Num instance for Sum
+#if !(MIN_VERSION_base(4,7,0))
+import Data.Orphans ()
+#endif
+
import Data.Traversable
import Data.Typeable (Typeable)
@@ -39,6 +47,7 @@ import Agda.Syntax.Abstract.Name
import Agda.Utils.Empty
import Agda.Utils.Functor
import Agda.Utils.Geniplate
+import Agda.Utils.Lens
import Agda.Utils.List
import Agda.Utils.Null
import Agda.Utils.Permutation
@@ -157,9 +166,13 @@ data Abs a = Abs { absName :: ArgName, unAbs :: a }
| NoAbs { absName :: ArgName, unAbs :: a }
deriving (Typeable, Functor, Foldable, Traversable)
+instance Decoration Abs where
+ traverseF f (Abs x a) = Abs x <$> f a
+ traverseF f (NoAbs x a) = NoAbs x <$> f a
+
-- | Types are terms with a sort annotation.
--
-data Type' a = El { getSort :: Sort, unEl :: a }
+data Type' a = El { _getSort :: Sort, unEl :: a }
deriving (Typeable, Show, Functor, Foldable, Traversable)
type Type = Type' Term
@@ -167,6 +180,22 @@ type Type = Type' Term
instance Decoration Type' where
traverseF f (El s a) = El s <$> f a
+class LensSort a where
+ lensSort :: Lens' Sort a
+ getSort :: a -> Sort
+ getSort a = a ^. lensSort
+
+instance LensSort (Type' a) where
+ lensSort f (El s a) = f s <&> \ s' -> El s' a
+
+-- General instance leads to overlapping instances.
+-- instance (Decoration f, LensSort a) => LensSort (f a) where
+instance LensSort a => LensSort (Common.Dom c a) where
+ lensSort = traverseF . lensSort
+
+instance LensSort a => LensSort (Abs a) where
+ lensSort = traverseF . lensSort
+
-- | Sequence of types. An argument of the first type is bound in later types
-- and so on.
data Tele a = EmptyTel
@@ -175,14 +204,10 @@ data Tele a = EmptyTel
type Telescope = Tele (Dom Type)
-instance Null (Tele a) where
- null EmptyTel = True
- null ExtendTel{} = False
- empty = EmptyTel
-
+-- | A traversal for the names in a telescope.
mapAbsNamesM :: Applicative m => (ArgName -> m ArgName) -> Tele a -> m (Tele a)
mapAbsNamesM f EmptyTel = pure EmptyTel
-mapAbsNamesM f (ExtendTel a (Abs x b)) = ExtendTel a <$> (Abs <$> f x <*> mapAbsNamesM f b)
+mapAbsNamesM f (ExtendTel a ( Abs x b)) = ExtendTel a <$> ( Abs <$> f x <*> mapAbsNamesM f b)
mapAbsNamesM f (ExtendTel a (NoAbs x b)) = ExtendTel a <$> (NoAbs <$> f x <*> mapAbsNamesM f b)
-- Ulf, 2013-11-06: Last case is really impossible but I'd rather find out we
-- violated that invariant somewhere other than here.
@@ -203,13 +228,16 @@ replaceEmptyName x = mapAbsNames $ \ y -> if null y then x else y
-- | Sorts.
--
-data Sort = Type Level
- | Prop -- ignore me
- | Inf
- | DLub Sort (Abs Sort)
- -- ^ if the free variable occurs in the second sort
- -- the whole thing should reduce to Inf, otherwise
- -- it's the normal Lub
+data Sort
+ = Type Level -- ^ @Set ℓ@.
+ | Prop -- ^ Dummy sort.
+ | Inf -- ^ @Setω@.
+ | SizeUniv -- ^ @SizeUniv@, a sort inhabited by type @Size@.
+ | DLub Sort (Abs Sort)
+ -- ^ Dependent least upper bound.
+ -- If the free variable occurs in the second sort,
+ -- the whole thing should reduce to Inf,
+ -- otherwise it's the normal lub.
deriving (Typeable, Show)
-- | A level is a maximum expression of 0..n 'PlusLevel' expressions
@@ -219,14 +247,19 @@ data Sort = Type Level
newtype Level = Max [PlusLevel]
deriving (Show, Typeable)
-data PlusLevel = ClosedLevel Integer
- | Plus Integer LevelAtom
+data PlusLevel
+ = ClosedLevel Integer -- ^ @n@, to represent @Setₙ@.
+ | Plus Integer LevelAtom -- ^ @n + ℓ@.
deriving (Show, Typeable)
+-- | An atomic term of type @Level@.
data LevelAtom
= MetaLevel MetaId Elims
+ -- ^ A meta variable targeting @Level@ under some eliminations.
| BlockedLevel MetaId Term
- | NeutralLevel Term
+ -- ^ A term of type @Level@ whose reduction is blocked by a meta.
+ | NeutralLevel NotBlocked Term
+ -- ^ A neutral term of type @Level@.
| UnreducedLevel Term
-- ^ Introduced by 'instantiate', removed by 'reduce'.
deriving (Show, Typeable)
@@ -236,16 +269,112 @@ data LevelAtom
newtype MetaId = MetaId { metaId :: Nat }
deriving (Eq, Ord, Num, Real, Enum, Integral, Typeable)
+-- | Even if we are not stuck on a meta during reduction
+-- we can fail to reduce a definition by pattern matching
+-- for another reason.
+data NotBlocked
+ = StuckOn Elim
+ -- ^ The 'Elim' is neutral and block a pattern match.
+ | Underapplied
+ -- ^ Not enough arguments were supplied to complete the matching.
+ | AbsurdMatch
+ -- ^ We matched an absurd clause, results in a neutral 'Def'.
+ | MissingClauses
+ -- ^ We ran out of clauses, all considered clauses
+ -- produced an actual mismatch.
+ -- This can happen when try to reduce a function application
+ -- but we are still missing some function clauses.
+ -- See "Agda.TypeChecking.Patterns.Match".
+ | ReallyNotBlocked
+ -- ^ Reduction was not blocked, we reached a whnf
+ -- which can be anything but a stuck @'Def'@.
+ deriving (Show, Typeable)
+
+-- | 'ReallyNotBlocked' is the unit.
+-- 'MissingClauses' is dominant.
+-- @'StuckOn'{}@ should be propagated, if tied, we take the left.
+instance Monoid NotBlocked where
+ -- ReallyNotBlocked is neutral
+ mempty = ReallyNotBlocked
+ ReallyNotBlocked `mappend` b = b
+ -- MissingClauses is dominant (absorptive)
+ b@MissingClauses `mappend` _ = b
+ _ `mappend` b@MissingClauses = b
+ -- StuckOn is second strongest
+ b@StuckOn{} `mappend` _ = b
+ _ `mappend` b@StuckOn{} = b
+ b `mappend` _ = b
+
-- | Something where a meta variable may block reduction.
-data Blocked t = Blocked MetaId t
- | NotBlocked t
- deriving (Typeable, Eq, Ord, Functor, Foldable, Traversable)
+data Blocked t
+ = Blocked { theBlockingMeta :: MetaId , ignoreBlocking :: t }
+ | NotBlocked { blockingStatus :: NotBlocked, ignoreBlocking :: t }
+ deriving (Typeable, Show, Functor, Foldable, Traversable)
+ -- deriving (Typeable, Eq, Ord, Functor, Foldable, Traversable)
+-- | Blocking by a meta is dominant.
instance Applicative Blocked where
pure = notBlocked
- Blocked x f <*> e = Blocked x $ f (ignoreBlocking e)
- NotBlocked f <*> e = f <$> e
-
+ f <*> e = ((f $> ()) `mappend` (e $> ())) $> ignoreBlocking f (ignoreBlocking e)
+
+-- -- | Blocking by a meta is dominant.
+-- instance Applicative Blocked where
+-- pure = notBlocked
+-- Blocked x f <*> e = Blocked x $ f (ignoreBlocking e)
+-- NotBlocked nb f <*> Blocked x e = Blocked x $ f e
+-- NotBlocked nb f <*> NotBlocked nb' e = NotBlocked (nb `mappend` nb') $ f e
+
+-- | @'Blocked' t@ without the @t@.
+type Blocked_ = Blocked ()
+
+instance Monoid Blocked_ where
+ mempty = notBlocked ()
+ -- ReallyNotBlocked is neutral
+ NotBlocked ReallyNotBlocked _ `mappend` b = b
+ b `mappend` NotBlocked ReallyNotBlocked _ = b
+ -- StuckOn is strongest
+ b@(NotBlocked StuckOn{} _) `mappend` _ = b
+ _ `mappend` b@(NotBlocked StuckOn{} _) = b
+ -- Blocked is weakest
+ b@Blocked{} `mappend` Blocked{} = b
+ Blocked{} `mappend` b = b
+ b `mappend` Blocked{} = b
+ -- For the other cases, we take the left
+ b `mappend` _ = b
+
+-- | When trying to reduce @f es@, on match failed on one
+-- elimination @e ∈ es@ that came with info @r :: NotBlocked@.
+-- @stuckOn e r@ produces the new @NotBlocked@ info.
+--
+-- 'MissingClauses' must be propagated, as this is blockage
+-- that can be lifted in the future (as more clauses are added).
+--
+-- @'StuckOn' e0@ is also propagated, since it provides more
+-- precise information as @StuckOn e@ (as @e0@ is the original
+-- reason why reduction got stuck and usually a subterm of @e@).
+-- An information like @StuckOn (Apply (Arg info (Var i [])))@
+-- (stuck on a variable) could be used by the lhs/coverage checker
+-- to trigger a split on that (pattern) variable.
+--
+-- In the remaining cases for @r@, we are terminally stuck
+-- due to @StuckOn e@. Propagating @'AbsurdMatch'@ does not
+-- seem useful.
+--
+-- 'Underapplied' must not be propagated, as this would mean
+-- that @f es@ is underapplied, which is not the case (it is stuck).
+-- Note that 'Underapplied' can only arise when projection patterns were
+-- missing to complete the original match (in @e@).
+-- (Missing ordinary pattern would mean the @e@ is of function type,
+-- but we cannot match against something of function type.)
+stuckOn :: Elim -> NotBlocked -> NotBlocked
+stuckOn e r =
+ case r of
+ MissingClauses -> r
+ StuckOn{} -> r
+ Underapplied -> r'
+ AbsurdMatch -> r'
+ ReallyNotBlocked -> r'
+ where r' = StuckOn e
---------------------------------------------------------------------------
-- * Definitions
@@ -258,7 +387,7 @@ instance Applicative Blocked where
-- the patterns to the order they occur in the telescope. The body
-- binds the variables in the order they appear in the patterns.
--
--- @clauseTel ~ permute clausePerm (patternVars clausPats)@
+-- @clauseTel ~ permute clausePerm (patternVars namedClausePats)@
--
-- Terms in dot patterns are valid in the clause telescope.
--
@@ -266,12 +395,16 @@ instance Applicative Blocked where
-- as variables. TODO: Change this!
data Clause = Clause
{ clauseRange :: Range
- , clauseTel :: Telescope -- ^ The types of the pattern variables.
+ , clauseTel :: Telescope
+ -- ^ @Δ@: The types of the pattern variables.
, clausePerm :: Permutation
+ -- ^ @π@ with @Γ ⊢ renamingR π : Δ@, which means @Δ ⊢ renaming π : Γ@.
, namedClausePats :: [NamedArg Pattern]
+ -- ^ @let Γ = patternVars namedClausePats@
, clauseBody :: ClauseBody
+ -- ^ @λΓ.v@
, clauseType :: Maybe (Arg Type)
- -- ^ The type of the rhs under @clauseTel@.
+ -- ^ @Δ ⊢ t@. The type of the rhs under @clauseTel@.
-- Used, e.g., by @TermCheck@.
-- Can be 'Irrelevant' if we encountered an irrelevant projection
-- pattern on the lhs.
@@ -342,6 +475,8 @@ data Pattern' x
type Pattern = Pattern' PatVarName
-- ^ The @PatVarName@ is a name suggestion.
+-- | Type used when numbering pattern variables.
+type DeBruijnPattern = Pattern' (Int, PatVarName)
namedVarP :: PatVarName -> Named (Ranged PatVarName) Pattern
namedVarP x = Named named $ VarP x
@@ -354,7 +489,23 @@ namedVarP x = Named named $ VarP x
-- The @Type@ is the type of the whole record pattern.
-- The scope used for the type is given by any outer scope
-- plus the clause's telescope ('clauseTel').
-type ConPatternInfo = Maybe (Bool, Arg Type)
+data ConPatternInfo = ConPatternInfo
+ { conPRecord :: Maybe Bool
+ -- ^ @Nothing@ if data constructor.
+ -- @Just@ if record constructor, then @True@ if pattern
+ -- was expanded from an implicit pattern.
+ , conPType :: Maybe (Arg Type)
+ -- ^ The type of the whole constructor pattern.
+ -- Should be present (@Just@) if constructor pattern is
+ -- is generated ordinarily by type-checking.
+ -- Could be absent (@Nothing@) if pattern comes from some
+ -- plugin (like Agsy).
+ -- Needed e.g. for with-clause stripping.
+ }
+ deriving (Typeable, Show)
+
+noConPatternInfo :: ConPatternInfo
+noConPatternInfo = ConPatternInfo Nothing Nothing
-- | Extract pattern variables in left-to-right order.
-- A 'DotP' is also treated as variable (see docu for 'Clause').
@@ -370,7 +521,7 @@ properlyMatching :: Pattern -> Bool
properlyMatching VarP{} = False
properlyMatching DotP{} = False
properlyMatching LitP{} = True
-properlyMatching (ConP _ mt ps) = isNothing mt || -- not a record cons
+properlyMatching (ConP _ ci ps) = isNothing (conPRecord ci) || -- not a record cons
List.any (properlyMatching . namedArg) ps -- or one of subpatterns is a proper m
properlyMatching ProjP{} = True
@@ -380,30 +531,56 @@ properlyMatching ProjP{} = True
-- | Substitutions.
-infixr 4 :#
data Substitution
- = IdS -- Γ ⊢ IdS : Γ
-
- | EmptyS -- Γ ⊢ EmptyS : ()
-
- -- Γ ⊢ ρ : Δ
- | Wk !Int Substitution -- -------------------
- -- Γ, Ψ ⊢ Wk |Ψ| ρ : Δ
-
- -- Γ ⊢ u : Aρ Γ ⊢ ρ : Δ
- | Term :# Substitution -- ---------------------
- -- Γ ⊢ u :# ρ : Δ, A
-
- -- First argument is __IMPOSSIBLE__ -- Γ ⊢ ρ : Δ
- | Strengthen Empty Substitution -- ---------------------------
- -- Γ ⊢ Strengthen ρ : Δ, A
-
- -- Γ ⊢ ρ : Δ
- | Lift !Int Substitution -- -------------------------
- -- Γ, Ψρ ⊢ Lift |Ψ| ρ : Δ, Ψ
+ = IdS
+ -- ^ Identity substitution.
+ -- @Γ ⊢ IdS : Γ@
+
+ | EmptyS
+ -- ^ Empty substitution, lifts from the empty context.
+ -- Apply this to closed terms you want to use in a non-empty context.
+ -- @Γ ⊢ EmptyS : ()@
+
+ | Term :# Substitution
+ -- ^ Substitution extension, ``cons''.
+ -- @
+ -- Γ ⊢ u : Aρ Γ ⊢ ρ : Δ
+ -- ----------------------
+ -- Γ ⊢ u :# ρ : Δ, A
+ -- @
+
+ | Strengthen Empty Substitution
+ -- ^ Strengthening substitution. First argument is @__IMPOSSIBLE__@.
+ -- Apply this to a term which does not contain variable 0
+ -- to lower all de Bruijn indices by one.
+ -- @
+ -- Γ ⊢ ρ : Δ
+ -- ---------------------------
+ -- Γ ⊢ Strengthen ρ : Δ, A
+ -- @
+
+ | Wk !Int Substitution
+ -- ^ Weakning substitution, lifts to an extended context.
+ -- @
+ -- Γ ⊢ ρ : Δ
+ -- -------------------
+ -- Γ, Ψ ⊢ Wk |Ψ| ρ : Δ
+ -- @
+
+
+ | Lift !Int Substitution
+ -- ^ Lifting substitution. Use this to go under a binder.
+ -- @Lift 1 ρ == var 0 :# Wk 1 ρ@.
+ -- @
+ -- Γ ⊢ ρ : Δ
+ -- -------------------------
+ -- Γ, Ψρ ⊢ Lift |Ψ| ρ : Δ, Ψ
+ -- @
deriving (Show)
+infixr 4 :#
+
---------------------------------------------------------------------------
-- * Absurd Lambda
---------------------------------------------------------------------------
@@ -518,12 +695,13 @@ sort :: Sort -> Type
sort s = El (sSuc s) $ Sort s
varSort :: Int -> Sort
-varSort n = Type $ Max [Plus 0 $ NeutralLevel $ Var n []]
+varSort n = Type $ Max [Plus 0 $ NeutralLevel mempty $ Var n []]
-- | Get the next higher sort.
sSuc :: Sort -> Sort
sSuc Prop = mkType 1
sSuc Inf = Inf
+sSuc SizeUniv = SizeUniv
sSuc (DLub a b) = DLub (sSuc a) (fmap sSuc b)
sSuc (Type l) = Type $ levelSuc l
@@ -542,6 +720,7 @@ impossibleTerm file line = Lit $ LitString noRange $ unlines
, "Location of the error: " ++ file ++ ":" ++ show line
]
+-- | Constructing a singleton telescope.
class SgTel a where
sgTel :: a -> Telescope
@@ -564,17 +743,13 @@ isHackReifyToMeta _ = False
blockingMeta :: Blocked t -> Maybe MetaId
blockingMeta (Blocked m _) = Just m
-blockingMeta (NotBlocked _) = Nothing
+blockingMeta NotBlocked{} = Nothing
blocked :: MetaId -> a -> Blocked a
blocked x = Blocked x
notBlocked :: a -> Blocked a
-notBlocked = NotBlocked
-
-ignoreBlocking :: Blocked a -> a
-ignoreBlocking (Blocked _ x) = x
-ignoreBlocking (NotBlocked x) = x
+notBlocked = NotBlocked ReallyNotBlocked
---------------------------------------------------------------------------
-- * Simple operations on terms and types.
@@ -610,6 +785,12 @@ instance Suggest String String where
instance Suggest (Abs a) (Abs b) where
suggest b1 b2 = suggest (absName b1) (absName b2)
+instance Suggest String (Abs b) where
+ suggest x b = suggest x (absName b)
+
+instance Suggest Name (Abs b) where
+ suggest n b = suggest (nameToArgName n) (absName b)
+
---------------------------------------------------------------------------
-- * Eliminations.
---------------------------------------------------------------------------
@@ -703,6 +884,30 @@ swapElimArg (Proj d) = defaultArg (Proj d)
-}
---------------------------------------------------------------------------
+-- * Null instances.
+---------------------------------------------------------------------------
+
+instance Null (Tele a) where
+ empty = EmptyTel
+ null EmptyTel = True
+ null ExtendTel{} = False
+
+instance Null ClauseBody where
+ empty = NoBody
+ null NoBody = True
+ null _ = False
+
+-- | A 'null' clause is one with no patterns and no rhs.
+-- Should not exist in practice.
+instance Null Clause where
+ empty = Clause empty empty empty empty empty empty
+ null (Clause r tel perm pats body t)
+ = null tel
+ && null pats
+ && null body
+
+
+---------------------------------------------------------------------------
-- * Show instances.
---------------------------------------------------------------------------
@@ -712,49 +917,21 @@ instance Show a => Show (Abs a) where
showsPrec p (NoAbs x a) = showParen (p > 0) $
showString "NoAbs " . shows x . showString " " . showsPrec 10 a
+-- | Show non-record version of this newtype.
instance Show MetaId where
- show (MetaId n) = "_" ++ show n
+ showsPrec p (MetaId n) = showParen (p > 0) $
+ showString "MetaId " . shows n
-instance Show t => Show (Blocked t) where
- showsPrec p (Blocked m x) = showParen (p > 0) $
- showString "Blocked " . shows m . showString " " . showsPrec 10 x
- showsPrec p (NotBlocked x) = showsPrec p x
+-- instance Show t => Show (Blocked t) where
+-- showsPrec p (Blocked m x) = showParen (p > 0) $
+-- showString "Blocked " . shows m . showString " " . showsPrec 10 x
+-- showsPrec p (NotBlocked x) = showsPrec p x
---------------------------------------------------------------------------
--- * Sized instances.
+-- * Sized instances and TermSize.
---------------------------------------------------------------------------
-instance Sized Term where
- size v = case v of
- Var _ vs -> 1 + Prelude.sum (map size vs)
- Def _ vs -> 1 + Prelude.sum (map size vs)
- Con _ vs -> 1 + Prelude.sum (map size vs)
- MetaV _ vs -> 1 + Prelude.sum (map size vs)
- Level l -> size l
- Lam _ f -> 1 + size f
- Lit _ -> 1
- Pi a b -> 1 + size a + size b
- Sort s -> 1
- DontCare mv -> size mv
- Shared p -> size (derefPtr p)
- ExtLam{} -> __IMPOSSIBLE__
-
-instance Sized Type where
- size = size . unEl
-
-instance Sized Level where
- size (Max as) = 1 + Prelude.sum (map size as)
-
-instance Sized PlusLevel where
- size (ClosedLevel _) = 1
- size (Plus _ a) = size a
-
-instance Sized LevelAtom where
- size (MetaLevel _ vs) = 1 + Prelude.sum (map size vs)
- size (BlockedLevel _ v) = size v
- size (NeutralLevel v) = size v
- size (UnreducedLevel v) = size v
-
+-- | The size of a telescope is its length (as a list).
instance Sized (Tele a) where
size EmptyTel = 0
size (ExtendTel _ tel) = 1 + size tel
@@ -762,9 +939,68 @@ instance Sized (Tele a) where
instance Sized a => Sized (Abs a) where
size = size . unAbs
-instance Sized a => Sized (Elim' a) where
- size (Apply v) = size v
- size Proj{} = 1
+-- | The size of a term is roughly the number of nodes in its
+-- syntax tree. This number need not be precise for logical
+-- correctness of Agda, it is only used for reporting
+-- (and maybe decisions regarding performance).
+--
+-- Not counting towards the term size are:
+--
+-- * sort and color annotations,
+-- * projections.
+--
+class TermSize a where
+ termSize :: a -> Int
+ termSize = getSum . tsize
+
+ tsize :: a -> Sum Int
+
+instance (Foldable t, TermSize a) => TermSize (t a) where
+ tsize = foldMap tsize
+
+instance TermSize Term where
+ tsize v = case v of
+ Var _ vs -> 1 + tsize vs
+ Def _ vs -> 1 + tsize vs
+ Con _ vs -> 1 + tsize vs
+ MetaV _ vs -> 1 + tsize vs
+ Level l -> tsize l
+ Lam _ f -> 1 + tsize f
+ Lit _ -> 1
+ Pi a b -> 1 + tsize a + tsize b
+ Sort s -> tsize s
+ DontCare mv -> tsize mv
+ Shared p -> tsize (derefPtr p)
+ ExtLam{} -> __IMPOSSIBLE__
+
+instance TermSize Sort where
+ tsize s = case s of
+ Type l -> 1 + tsize l
+ Prop -> 1
+ Inf -> 1
+ SizeUniv -> 1
+ DLub s s' -> 1 + tsize s + tsize s'
+
+instance TermSize Level where
+ tsize (Max as) = 1 + tsize as
+
+instance TermSize PlusLevel where
+ tsize (ClosedLevel _) = 1
+ tsize (Plus _ a) = tsize a
+
+instance TermSize LevelAtom where
+ tsize (MetaLevel _ vs) = 1 + tsize vs
+ tsize (BlockedLevel _ v) = tsize v
+ tsize (NeutralLevel _ v) = tsize v
+ tsize (UnreducedLevel v) = tsize v
+
+instance TermSize Substitution where
+ tsize IdS = 1
+ tsize EmptyS = 1
+ tsize (Wk _ rho) = 1 + tsize rho
+ tsize (t :# rho) = 1 + tsize t + tsize rho
+ tsize (Strengthen _ rho) = 1 + tsize rho
+ tsize (Lift _ rho) = 1 + tsize rho
---------------------------------------------------------------------------
-- * KillRange instances.
@@ -798,7 +1034,7 @@ instance KillRange PlusLevel where
instance KillRange LevelAtom where
killRange (MetaLevel n as) = killRange1 (MetaLevel n) as
killRange (BlockedLevel m v) = killRange1 (BlockedLevel m) v
- killRange (NeutralLevel v) = killRange1 NeutralLevel v
+ killRange (NeutralLevel r v) = killRange1 (NeutralLevel r) v
killRange (UnreducedLevel v) = killRange1 UnreducedLevel v
instance KillRange Type where
@@ -808,9 +1044,21 @@ instance KillRange Sort where
killRange s = case s of
Prop -> Prop
Inf -> Inf
+ SizeUniv -> SizeUniv
Type a -> killRange1 Type a
DLub s1 s2 -> killRange2 DLub s1 s2
+instance KillRange Substitution where
+ killRange IdS = IdS
+ killRange EmptyS = EmptyS
+ killRange (Wk n rho) = killRange1 (Wk n) rho
+ killRange (t :# rho) = killRange2 (:#) t rho
+ killRange (Strengthen err rho) = killRange1 (Strengthen err) rho
+ killRange (Lift n rho) = killRange1 (Lift n) rho
+
+instance KillRange ConPatternInfo where
+ killRange (ConPatternInfo mr mt) = killRange1 (ConPatternInfo mr) mt
+
instance KillRange Pattern where
killRange p =
case p of
@@ -857,8 +1105,19 @@ instanceUniverseBiT' [] [t| ([Term], Term) |]
-- * Simple pretty printing
-----------------------------------------------------------------------------
-showTerm :: Term -> String
-showTerm = show . pretty
+instance Pretty MetaId where
+ pretty (MetaId n) = text $ "_" ++ show n
+
+instance Pretty Substitution where
+ prettyPrec p rho = brackets $ pr rho
+ where
+ pr rho = case rho of
+ IdS -> text "idS"
+ EmptyS -> text "ε"
+ t :# rho -> prettyPrec 1 t <+> text ":#" <+> pr rho
+ Strengthen _ rho -> text "↓" <+> pr rho
+ Wk n rho -> text ("↑" ++ show n) <+> pr rho
+ Lift n rho -> text ("⇑" ++ show n) <+> pr rho
instance Pretty Term where
prettyPrec p v =
@@ -879,7 +1138,7 @@ instance Pretty Term where
, nest 2 $ pretty (unAbs b) ]
Sort s -> pretty s
Level l -> pretty l
- MetaV x els -> text (show x) `pApp` els
+ MetaV x els -> pretty x `pApp` els
DontCare v -> pretty v
Shared{} -> __IMPOSSIBLE__
ExtLam{} -> __IMPOSSIBLE__
@@ -914,7 +1173,7 @@ instance Pretty LevelAtom where
case a of
MetaLevel x els -> prettyPrec p (MetaV x els)
BlockedLevel _ v -> prettyPrec p v
- NeutralLevel v -> prettyPrec p v
+ NeutralLevel _ v -> prettyPrec p v
UnreducedLevel v -> prettyPrec p v
instance Pretty Sort where
@@ -925,6 +1184,7 @@ instance Pretty Sort where
Type l -> mparens (p > 9) $ text "Set" <+> prettyPrec 10 l
Prop -> text "Prop"
Inf -> text "Setω"
+ SizeUniv -> text "SizeUniv"
DLub s b -> mparens (p > 9) $
text "dlub" <+> prettyPrec 10 s
<+> parens (sep [ text ("λ " ++ show (absName b) ++ " ->")
diff --git a/src/full/Agda/Syntax/Internal/Defs.hs b/src/full/Agda/Syntax/Internal/Defs.hs
index dd4fc38..a79b7be 100644
--- a/src/full/Agda/Syntax/Internal/Defs.hs
+++ b/src/full/Agda/Syntax/Internal/Defs.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
-- | Extract used definitions from terms.
module Agda.Syntax.Internal.Defs where
@@ -82,6 +81,7 @@ instance GetDefs Sort where
Type l -> getDefs l
Prop -> return ()
Inf -> return ()
+ SizeUniv -> return ()
DLub s s' -> getDefs s >> getDefs s'
instance GetDefs Level where
@@ -95,7 +95,7 @@ instance GetDefs LevelAtom where
getDefs a = case a of
MetaLevel x vs -> getDefs x >> getDefs vs
BlockedLevel _ v -> getDefs v
- NeutralLevel v -> getDefs v
+ NeutralLevel _ v -> getDefs v
UnreducedLevel v -> getDefs v
-- collection instances
diff --git a/src/full/Agda/Syntax/Internal/Generic.hs b/src/full/Agda/Syntax/Internal/Generic.hs
index 9da57c2..d0e9552 100644
--- a/src/full/Agda/Syntax/Internal/Generic.hs
+++ b/src/full/Agda/Syntax/Internal/Generic.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
module Agda.Syntax.Internal.Generic where
@@ -160,17 +159,17 @@ instance TermLike PlusLevel where
instance TermLike LevelAtom where
traverseTerm f l = case l of
MetaLevel m vs -> MetaLevel m $ traverseTerm f vs
- NeutralLevel v -> NeutralLevel $ traverseTerm f v
+ NeutralLevel r v -> NeutralLevel r $ traverseTerm f v
BlockedLevel m v -> BlockedLevel m $ traverseTerm f v
UnreducedLevel v -> UnreducedLevel $ traverseTerm f v
traverseTermM f l = case l of
MetaLevel m vs -> MetaLevel m <$> traverseTermM f vs
- NeutralLevel v -> NeutralLevel <$> traverseTermM f v
+ NeutralLevel r v -> NeutralLevel r <$> traverseTermM f v
BlockedLevel m v -> BlockedLevel m <$> traverseTermM f v
UnreducedLevel v -> UnreducedLevel <$> traverseTermM f v
foldTerm f l = case l of
MetaLevel m vs -> foldTerm f vs
- NeutralLevel v -> foldTerm f v
+ NeutralLevel _ v -> foldTerm f v
BlockedLevel _ v -> foldTerm f v
UnreducedLevel v -> foldTerm f v
diff --git a/src/full/Agda/Syntax/Internal/Pattern.hs b/src/full/Agda/Syntax/Internal/Pattern.hs
index 7f9ca74..78da0c4 100644
--- a/src/full/Agda/Syntax/Internal/Pattern.hs
+++ b/src/full/Agda/Syntax/Internal/Pattern.hs
@@ -1,12 +1,14 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE OverlappingInstances #-}
-{-# LANGUAGE TupleSections #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-{-# LANGUAGE UndecidableInstances #-} -- because of func. deps.
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE UndecidableInstances #-} -- because of func. deps.
+
+#if __GLASGOW_HASKELL__ <= 708
+{-# LANGUAGE OverlappingInstances #-}
+#endif
module Agda.Syntax.Internal.Pattern where
@@ -49,7 +51,12 @@ class FunArity a where
funArity :: a -> Int
-- | Get the number of initial 'Apply' patterns.
+
+#if __GLASGOW_HASKELL__ >= 710
+instance {-# OVERLAPPABLE #-} IsProjP p => FunArity [p] where
+#else
instance IsProjP p => FunArity [p] where
+#endif
funArity = length . takeWhile (isNothing . isProjP)
-- | Get the number of initial 'Apply' patterns in a clause.
@@ -57,7 +64,11 @@ instance FunArity Clause where
funArity = funArity . clausePats
-- | Get the number of common initial 'Apply' patterns in a list of clauses.
+#if __GLASGOW_HASKELL__ >= 710
+instance {-# OVERLAPPING #-} FunArity [Clause] where
+#else
instance FunArity [Clause] where
+#endif
funArity [] = 0
funArity cls = minimum $ map funArity cls
@@ -90,7 +101,8 @@ instance LabelPatVars (Pattern' x) (Pattern' (i,x)) i where
where next = do (x:xs) <- get; put xs; return x
-- | Augment pattern variables with their de Bruijn index.
-{-# SPECIALIZE numberPatVars :: Permutation -> [NamedArg (Pattern' x)] -> [(NamedArg (Pattern' (Int, x)))] #-}
+{-# SPECIALIZE numberPatVars :: Permutation -> [NamedArg (Pattern' x)] -> [NamedArg (Pattern' (Int, x))] #-}
+{-# SPECIALIZE numberPatVars :: Permutation -> [NamedArg Pattern] -> [NamedArg DeBruijnPattern] #-}
numberPatVars :: LabelPatVars a b Int => Permutation -> a -> b
numberPatVars perm ps = evalState (labelPatVars ps) $
permute (invertP __IMPOSSIBLE__ perm) $ downFrom $ size perm
diff --git a/src/full/Agda/Syntax/Notation.hs b/src/full/Agda/Syntax/Notation.hs
index 71bc525..eee7ec5 100644
--- a/src/full/Agda/Syntax/Notation.hs
+++ b/src/full/Agda/Syntax/Notation.hs
@@ -1,6 +1,7 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE ScopedTypeVariables #-}
+-- GHC 7.4.2 requires this layout for the pragmas. See Issue 1460.
+{-# LANGUAGE CPP,
+ DeriveDataTypeable,
+ ScopedTypeVariables #-}
{-| As a concrete name, a notation is a non-empty list of alternating 'IdPart's and holes.
In contrast to concrete names, holes can be binders.
@@ -23,6 +24,7 @@ import Data.Maybe
import Data.Typeable (Typeable)
import Agda.Syntax.Common
+import Agda.Syntax.Position
import Agda.Utils.Except ( MonadError(throwError) )
import Agda.Utils.List
@@ -54,7 +56,13 @@ data GenPart
| NormalHole (NamedArg () Int)
-- ^ Argument is where the expression should go.
| IdPart RawName
- deriving (Typeable, Show, Eq)
+ deriving (Typeable, Show, Eq, Ord)
+
+instance KillRange GenPart where
+ killRange p = case p of
+ IdPart x -> IdPart x
+ BindHole i -> BindHole i
+ NormalHole x -> NormalHole $ killRange x
-- | Get a flat list of identifier parts of a notation.
stringParts :: Notation -> [RawName]
@@ -83,7 +91,7 @@ data NotationKind
| PostfixNotation -- ^ Ex: @bla_blub_@.
| NonfixNotation -- ^ Ex: @bla_blub@.
| NoNotation
- deriving (Eq)
+ deriving (Eq, Show)
-- | Classify a notation by presence of leading and/or trailing hole.
notationKind :: Notation -> NotationKind